null是什么?[有趣的java问题一] 是值?是内存地址?是啥?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 SUN的hotspot jvm里面应该就是0。 可以去看虚拟机代码中aconst_null指令的实现。 aconst_nullOperationPush nullFormataconst_null Formsaconst_null = 1 (0x1)Operand Stack... ..., nullDescriptionPush the null object reference onto the operand stack.NotesThe Java virtual machine does not mandate a concrete value for null. jikes vm好像是让null指向一个特殊位置,然后访问的时候由硬件检测空指针异常,提高效率。具体是啥要看vm实现了 呵呵,这个问题算有趣的吧。不管是哪个VM,要确定NULL是什么,证明之,不要猜测。 null 这个叫无 " " 这个叫空 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=170void 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看一下对象布局和硬件空指针检测就清楚了。 打印下列图形 拿不到联接 向ORACLE表中 插入日期型数据的奇怪问题 谁有完整的在线游戏代码啊? 请高手来看一看我的这个问题 关于一个NullPointerException错误的!! x=x+1;x++;x+=1问题? 各位,给个建议给我! 怎样在已有的class文件上生成jar文件? 我所希望的Java的跨平台特性及兼容性。 培训9k贵不贵哈,请问? 如何对字符串各字符的首字母从A-Z排序 关于char字符问题???
Push null
Format
aconst_null Forms
aconst_null = 1 (0x1)Operand Stack
... ..., nullDescription
Push the null object reference onto the operand stack.Notes
The Java virtual machine does not mandate a concrete value for null.
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=170void 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
看一下对象布局和硬件空指针检测就清楚了。