类型转换问题
1. 输出结果为:168888
public static void main(String[] args) { System.out.println(8+8+"88"+8+8); }
解释:
1.从左往右看,前边两个8都为 int 类型,8+8=16;
2."88"为 String 类型,16 +"88" = 1688; 字符串拼接后依然是 String类型
3.因此 1688 + 8 = 16888; 16888 + 8 = 168888;
2. 输出结果为:出现 NullPointException 空指针异常
static Integer i; public static void main(String[] args) { if( i == 1) { System.out.println("OK"); } }
解释:
Integer 是 int 的包装类,属于引用类型,默认值为 null;
if ( null == 1 ) 在编译其不会报错,但运行会报错
解决方法:1. 为 i 赋初始值; 2. 将 Integer 改为 int
3.输出结果: 编译期 出现 not have been initialized
static final int i; public static void main(String[] args) { System.out.println(i); }
解释: final 修饰的变量,要赋初始值;
4.这段代码共创建了几个对象:5
String s=”Fred”; s=s+”47”; s=s.substring(2,5); s=s.toUpperCase(); return s.toString;
解释:
String s = "Fred" 创建了一个 Fred
s = s + "47" 创建了2个 ( s = s 会创建一个 Fred,s = s + "47"会再创建一个 Fred47)
s=s.substring(2,5); 创建一个 ed47
s=s.toUpperCase(); 创建一个 ED47