java trick

原创 2007年10月05日 15:10:00

// What will happen when you attempt to compile and run the following code?

 

class Base 
...{
    
int i = 99;
    
public void amethod()
    
...{
        System.out.println(
"Base.amethod()");
    }

        
    Base()
    
...{
        amethod();
    }

}

public class Derived extends Base
...{
    
int i = -1;
        
    
public static void main(String argv[])
    
...{
        Base b 
= new Derived();
        System.out.println(b.i);
        b.amethod();
    }


    
public void amethod()
    
...{
        System.out.println(
"Derived.amethod()");
    }

}
 

answer:

Derived.amethod()
99
Derived.amethod()
-------------------------------------------------
The reason is that this code creates an instance of the Derived class but assigns it to a reference of a the Base class. In this situation a reference to any of the fields such as i will refer to the value in the Base class, but a call to a method will refer to the method in the class type rather than its reference handle. But note that if the amethod() was not present in the base class, then compilation error would be reported as at compile time. When the compiler sees the statement like b.amethod(), it checks if the method is present in the base class or not. Only at the run time it decides to call the method from the derived class.

 

//Read the code below. Will be the result of attempting to compile and run the code below. 
public class AQuestion ...
    
public void method(Object o)...
        System.out.println(
"Object Verion"); 
    }
 
    
public void method(String s)...
        System.out.println(
"String Version"); 
    }

    
public static void main(String args[])...
        AQuestion question 
= new AQuestion(); 
        question.method(
null);     
    }

}

//The code compiles cleanly and shows "String Version"

Read the code below. Will be the result of attempting to compile and run the code below.

public class AQuestion...
    
public void method(StringBuffer sb)...
        System.out.println(
"StringBuffer Verion"); 
    }
 
    
public void method(String s)...
        System.out.println(
"String Version"); 
    }

    
public static void main(String args[])...
        AQuestion question 
= new AQuestion(); 
        question.method(
null);     
    }

}

The code throws an Exception at Runtime.

public interface AQuestion{ 
	public abstract void someMethod() throws Exception; 
} 


A Class implementing this interface should
1. Necessarily be an abstract class.
2. Should have the method public abstract void someMethod();
3. Should have the method public void someMethod() which has to throw an exception which is a subclass of java.lang.Exception.
4. Should have the method public void someMethod() which need not throw an Exception.
[ 4 is right ]

 

public class AQuestion...
    
private int i = j; 
    
private int j = 10

    
public static void main(String args[])...
        System.out.println((
new AQuestion()).i); 
    }

}
1. Compiler error complaining about access restriction of private variables of AQuestion.

2. Compiler error complaining about forward referencing.

3. No error - The output is 0;

4. No error - The output is 10;

hash trick在机器学习中的使用

hash trick的应用
  • dm_ustc
  • dm_ustc
  • 2015年05月16日 21:59
  • 6756

【机器学习trick】Batch-Normalization的理解和研究

Batch-Normalization概述15年谷歌发表了一篇文章,名字是《Batch Normalization: Accelerating Deep Network Training by Red...
  • u013106893
  • u013106893
  • 2017年04月06日 23:46
  • 224

C++基础——tricks,让人惊艳的那些代码

本文主要涉及c++中常见的一些神奇的tricks。 1. 获得可变参数列表中最大类型的类型大小 2. tagged union 3. 模板的特化...
  • lanchunhui
  • lanchunhui
  • 2015年11月02日 00:01
  • 1098

干货 | 自然语言处理(2)之浅谈向量化与Hash-Trick

微信公众号关键字全网搜索最新排名【机器学习算法】:排名第一【机器学习】:排名第一【Python】:排名第三【算法】:排名第四AI系列公开课,点图图片领取这一系列公开课将由一线技术专家从不同技术细分领域...
  • Mbx8X9u
  • Mbx8X9u
  • 2017年12月14日 00:00
  • 200

训练网络的一些trick(1):pre_train与逐层拷贝网络

最近做detection方面的工作,在实际训练方面做了一些尝试,这一篇主要记录对于网络pre_train的理解。 首先说pre_train,目前几乎所有做detection的网络都会用到这个技巧,...
  • byplane
  • byplane
  • 2017年05月18日 17:39
  • 369

kernel trick的原始想法

对偶SVM中依然包含了对升维后的向量做内积的操作。而对原来的数据集做升维就要消耗大量的时间。能不能采用一种技巧来节约存储空间和减小运算复杂度呢? 以二次非线性变换为例,如下图: 两个做内积就是...
  • qq_36695866
  • qq_36695866
  • 2016年12月09日 17:07
  • 790

原始LSH算法trick

原始LSH算法算法原理是将特征逐维映转成01串,之后进行hash(随机选bit),将空间中中相近的点hash到同一个桶;这样在查询中,只在同一个桶内暴力搜索即可,相较于在整个数据库中暴力查找,无疑减少...
  • zhaonin
  • zhaonin
  • 2016年01月27日 17:11
  • 771

Deep Learning入门:参数意义及对一些trick理解的总结

以下大部分都是在CIFAR10数据集使用tensorflow时获得的经验。 一、batch normalization batch normalization是以一个batch为整体进行归一化,一...
  • sisaku
  • sisaku
  • 2018年01月06日 16:30
  • 20

文本局部敏感哈希-MinHash算法原理

一、MinHash举例 下面原文转自大牛博客:聚类之MinHash              MinHash是基于Jaccard相似度的算法,一种降维的方法X,Y两个集合:X= {s1, s3, s6...
  • xj2419174554
  • xj2419174554
  • 2016年09月18日 23:03
  • 712

特征哈希(Feature Hashing)

特征哈希(Feature Hashing) Nov 20, 2014 在特征处理(Feature Processing)中我介绍了利用笛卡尔乘积的方法来构造组合特征。这种方法虽然简单,但麻...
  • wanglyPKU
  • wanglyPKU
  • 2016年07月08日 11:19
  • 4402
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java trick
举报原因:
原因补充:

(最多只允许输入30个字)