null是什么?[有趣的java问题一]

Brodie 2010-04-07 09:30:07
是值?是内存地址?是啥??
...全文
178 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZangXT 2010-04-07
  • 打赏
  • 举报
回复
sun hotspot vm:
http://www.google.com.hk/codesearch/p?hl=zh-CN#0ukxmVmYK7U/src/cpu/x86/vm/templateTable_x86_32.cpp&q=aconst_null()%20c%2B%2B%20openjdk&sa=N&cd=3&ct=rc&l=170

void TemplateTable::aconst_null() {
transition(vtos, atos);
__ xorl(rax, rax); //0
}


void TemplateTable::iconst(int value) {
transition(vtos, itos);
if (value == 0) {
__ xorl(rax, rax);
} else {
__ movl(rax, value);
}
}


void TemplateTable::lconst(int value) {
transition(vtos, ltos);
if (value == 0) {
__ xorl(rax, rax);
} else {
__ movl(rax, value);
}
assert(value >= 0, "check this code");
__ xorl(rdx, rdx);
}



IBM jikeshttp://www.ibm.com/developerworks/cn/java/jalapeno/index.html
看一下对象布局和硬件空指针检测就清楚了。

sharke118 2010-04-07
  • 打赏
  • 举报
回复
null 这个叫无 " " 这个叫空
Brodie 2010-04-07
  • 打赏
  • 举报
回复
一会我在SO的发一个同样的贴子,大家加油啊。
Brodie 2010-04-07
  • 打赏
  • 举报
回复
呵呵,这个问题算有趣的吧。不管是哪个VM,要确定NULL是什么,证明之,不要猜测。


[Quote=引用 12 楼 zangxt 的回复:]

jikes vm好像是让null指向一个特殊位置,然后访问的时候由硬件检测空指针异常,提高效率。

具体是啥要看vm实现了
[/Quote]
joaryyu 2010-04-07
  • 打赏
  • 举报
回复
是哥。。。。。
ZangXT 2010-04-07
  • 打赏
  • 举报
回复
jikes vm好像是让null指向一个特殊位置,然后访问的时候由硬件检测空指针异常,提高效率。

具体是啥要看vm实现了
py330316117 2010-04-07
  • 打赏
  • 举报
回复
是犀利。。。。。
lin6626536 2010-04-07
  • 打赏
  • 举报
回复
那要看在什么地方写Null了
hanluner 2010-04-07
  • 打赏
  • 举报
回复
\u0000
keeya0416 2010-04-07
  • 打赏
  • 举报
回复
[Quote=引用楼主 brodie 的回复:]
是值?是内存地址?是啥??
[/Quote]
我觉得是值,要是内存地址的话岂不是相当于赋值了
Brodie 2010-04-07
  • 打赏
  • 举报
回复
aconst_null

Operation
Push null
Format
aconst_null



Forms
aconst_null = 1 (0x1)

Operand Stack
... ..., null

Description
Push the null object reference onto the operand stack.

Notes
The Java virtual machine does not mandate a concrete value for null.
ZangXT 2010-04-07
  • 打赏
  • 举报
回复
可以去看虚拟机代码中aconst_null指令的实现。
ZangXT 2010-04-07
  • 打赏
  • 举报
回复
SUN的hotspot jvm里面应该就是0。
Brodie 2010-04-07
  • 打赏
  • 举报
回复
有什么证据啊?
[Quote=引用 2 楼 yanglu252 的回复:]

是值~~~~~~··
[/Quote]
Brodie 2010-04-07
  • 打赏
  • 举报
回复
哈哈,确实,翻了好几页贴子,没发现几个有趣的,所以自己发了个:D.

[Quote=引用 1 楼 leehomwong 的回复:]
是寂寞。。
[/Quote]
yanglu252 2010-04-07
  • 打赏
  • 举报
回复
是值~~~~~~··
24K純帥 2010-04-07
  • 打赏
  • 举报
回复
是寂寞。。

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧