随笔-34  评论-1965  文章-0  trackbacks-0

今天工作的时候,帮同事看一个BUG,突然想到一个问题,大家如果有兴趣的话,不妨也想一下答案吧。

以下三段代码的输出分别是什么?为什么会有这样的结果?

1 public class BoxingTest {
2 
3     public static void main(String[] args) {
4         System.out.println(true ? null : 0);
5     }
6 
7 }

1 public class BoxingTest {
2     
3     public static void main(String[] args) {
4         System.out.println(true ? (Integer) null : 0);
5     }
6     
7 }

1 public class BoxingTest {
2 
3     public static void main(String[] args) {
4         System.out.println(true ? (Integer) null : new Integer(0));
5     }
6 
7 }

想知道答案的话,自己动手试一下吧。:-)

posted on 2009-07-09 20:42 Max 阅读(6631) 评论(10)  编辑  收藏 所属分类: 方法与技巧(Tips & tricks)

评论:
# re: 今天工作的时候,想到的一个问题 2009-07-09 21:28 | Gordon
刚刚看了一下编译后的文件:
1.System.out.println((Integer)null); // 结果null
2.System.out.println(((Integer)null).intValue());// NullPointerException
3.System.out.println((Integer)null);// null  回复  更多评论
  
# re: 今天工作的时候,想到的一个问题 2009-07-09 22:02 | 321
无聊,这不是废话吗?System.out.println(((Integer)null).intValue());// NullPointerException本身就是null,你调用他当然异常了  回复  更多评论
  
# re: 今天工作的时候,想到的一个问题[未登录] 2009-07-10 11:19 | wonder
@321
0: getstatic #16; //Field java/lang/System.out:Ljava/io/PrintStream;
3: aconst_null
4: invokevirtual #22; //Method java/lang/Integer.intValue:()I
7: invokevirtual #28; //Method java/io/PrintStream.println:(I)V

确是啊,我开始还以为是toString()出的错呢  回复  更多评论
  
# re: 今天工作的时候,想到的一个问题 2009-07-10 16:56 | 细粒度权限管理
呵呵,这个题目有意思。给SCJP投稿吧~~~  回复  更多评论
  
# re: 今天工作的时候,想到的一个问题 2009-07-13 01:01 | pentiumao
这是java三元条件表达式的特性,当第二个和第三个表达式中有一个是基本数据类型的封装类(比如Integer),而另一个是基本数据类型,刚好第一个选择条件是选择封装类这个表达式的话,那么就会进行强制拆包成其对应的基本数据类型(比如int),如果恰好此时是空对象,拆包过程自然就会产生空指针异常了。当然还有很多其它规则,可以参考一下Java语言声明。  回复  更多评论
  
# re: 今天工作的时候,想到的一个问题 2009-07-13 11:43 | 虫虫
收藏了!  回复  更多评论
  
# re: 今天工作的时候,想到的一个问题 2009-07-13 16:15 | 某狼
记得null可以强制转化成任何对象,之前也写过类似的代码  回复  更多评论
  
# re: 今天工作的时候,想到的一个问题 2009-07-21 15:53 | dongni
你的代码编译可以通过啊  回复  更多评论
  
# re: 今天工作的时候,想到的一个问题 2009-08-18 16:39 | 必记未读
看来自动装、拆箱也不总是好的。带来便捷的同时也带来了麻烦。  回复  更多评论
  
# re: 今天工作的时候,想到的一个问题 2009-11-14 00:28 | 南阳百事通
我的站<a href="www.nybst.net" title="南阳百事通"> 希望能得到您的指点!我的站<a href="www.nybst.net" title="南阳百事通"> 希望能得到您的指点!  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: