分析:
因为int的数值分布是不对称的,并且2147483648已经超过了Integer.MAX_VALUE,他是Integer.MIN_VALUE的字面常量。
因此2147483648只能作为一元负操作符的操作数出现。
int或long转型成float,或long转型为double会导致精度丢失。
readObject方法调用了HashMap的put方法,因此也就调用了hashCode方法。
形如 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"; } |
因此如果
String str = null;
System.out.print(str);则str的值不是在编译期决定,而是在运行期决定。