类型转换问题

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

posted @ 2015-01-15 14:16  江湖一笑  阅读(166)  评论(0编辑  收藏  举报