黑马程序员技术交流社区

标题: 贫道有关于 null 的一点不解,请诸道友指点 [打印本页]

作者: 朱玉玺    时间: 2013-2-5 22:09
标题: 贫道有关于 null 的一点不解,请诸道友指点
本帖最后由 朱玉玺 于 2013-2-5 23:54 编辑

闲话少叙,上代码:
  1. short d1=0,d2=1;   //这里的short换成其他基本数据类型都可以,   
  2. d2=d1<d2?null:d2;
复制代码
这个编译可以通过,但会报空指针异常,如果改成d1>d2,则不会报错;把null换成其他数据类型也会报错。我的问题是:三元运算符中null可以参与基本数据类型运算,这种情况是为什么呢?null在内存中占几个字节?
————————————————————————————
有朋友解释说空指针异常是运行时异常,所以编译器不会报错,但运行时如果调用就会出问题,我觉得这个解释靠谱~
作者: dzr19850306    时间: 2013-2-5 22:49
拜托不要弄得这么麻烦好不。
int i=1;
i=null;
不同的类型转换问题。
作者: 朱玉玺    时间: 2013-2-5 23:21
dzr19850306 发表于 2013-2-5 22:49
拜托不要弄得这么麻烦好不。
int i=1;
i=null;

i=null;这句你编译能通过吗?
作者: dzr19850306    时间: 2013-2-6 11:49
你试一下就可以了。你的问题,和三元运算符无关,只是一个类型转换的问题。这是我的意思。
作者: 王昕    时间: 2013-2-6 18:32
对于任意一个Java虚拟机来说,所有的引用变量大小都一样,但不同的Java虚拟机间可能会以不同的方式来表示引用因此某个Java虚拟机的引用大小可能会大于或小于另一个Java虚拟机的引用。null就是引用的空值,和引用的其它可能值长度一样。
作者: 朱玉玺    时间: 2013-2-6 20:15
王昕 发表于 2013-2-6 18:32
对于任意一个Java虚拟机来说,所有的引用变量大小都一样,但不同的Java虚拟机间可能会以不同的方式来表示引 ...

“所有的引用变量大小都一样”,每个引用变量的大小是多少?几个字节?怎么查看?
作者: 王昕    时间: 2013-2-7 12:01
朱玉玺 发表于 2013-2-6 20:15
“所有的引用变量大小都一样”,每个引用变量的大小是多少?几个字节?怎么查看? ...

书上没说,书上说即使知道你也没法用它做除了取得对象之外的事。我猜应该和地址空间的大小有关。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2