高级谜题总结

1.-2147483648和-(2147483648)是否相等?

分析:

因为int的数值分布是不对称的,并且2147483648已经超过了Integer.MAX_VALUE,他是Integer.MIN_VALUE的字面常量。

因此2147483648只能作为一元负操作符的操作数出现。



2.精度丢失问题:

int或long转型成float,或long转型为double会导致精度丢失。



3.List和List<Object>是不同的

4.避免在用泛型的代码中参杂原始类型。

5.在设计内部类时,需要考虑这个类是否需要使用外围类实例,如果不是,则建议使用静态内部类。

6.不能扩展一个内部类。

7.HashSet结构解析

readObject方法调用了HashMap的put方法,因此也就调用了hashCode方法。


8.在readObject中,避免直接或间接的在正在进行反序列化的对象上调用任何方法。因为可能会调用被覆写的方法。

9.常量表达式的规定:

形如 static final 的常量在被调用时是在编译期将他转换成对应常量的。其他的不管常量还是变量都是在运行期决定值的。

比如:

package a;

class A{

public static void main(){

int a = B.B1;//在这里,编译期就将B.B1转换成"b1";

}

}

package b;

class B{

public static final String B1 = "b1";

}

10. 私有成员不能被继承。

11.null不是一个编译期的常量表达式,

因此如果

String str = null;

System.out.print(str);则str的值不是在编译期决定,而是在运行期决定。

你可能感兴趣的:(总结)