关于双等号判断的深入面试题

来源:互联网 发布:淘宝代销货源怎么找 编辑:程序博客网 时间:2024/06/07 13:34

1.如果整型字面量的值在-128到127之间,那么不会new新的Integer对象,而是直接引用常量池中的Integer对象,所以上面的面试题中f1==f2的结果是true,而f3==f4的结果是false。

Integer f1=100,f2=100,f3=150,f4=150;System.out.println(f1==f2);System.out.println(f3==f4);

2.存在于.class文件中的常量池,在运行期被JVM装载,并且可以扩充。String的intern()方法就是扩充常量池的一个 方法;当一个String实例str调用intern()方法时,Java查找常量池中是否有相同Unicode的字符串常量,如果有,则返回其的引用, 如果没有,则在常量池中增加一个Unicode等于str的字符串并返回它的引用;看例3就清楚了

String s1="JavaCode";String s2=new String("JavaCode");String s3="Java";String s4="Code";String s5="Java"+"Code";String s6=s3+s4;System.out.println(s1==s2);System.out.println(s1==s5);System.out.println(s1==s6);System.out.println(s1==s6.intern());System.out.println(s2==s2.intern());

3.Java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
 用法:
result = object instanceof class
参数:
Result:布尔类型。
Object:必选项。任意对象表达式。
Class:必选项。任意已定义的对象类。
说明:
如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object 不是指定类的一个实例,或者 object 是 null,则返回 false。

A a=null;B b=null;String str="";System.out.println(a instanceof A);b=new B();System.out.println(b instanceof B);System.out.println(str instanceof String);

 更多面试题请狠狠的点击 下载

原创粉丝点击