什么是null?
是null一个什么的实例?
什么集合null属于?
它是如何在记忆中表现出来的?
String str1;String str2 = null;String str3 = "";String str4 = new String();String str5 = new String("");我知道对于上面的第三次初始化,字符串对象在字符串池中初始化,第四次与字符串池无关.
1.和2.有什么区别?如果我将其str1视为指针变量,它存储的是一个从未被JVM或OS使用的特定内存地址?
4和5之间有区别吗?
当我打印str1并str2直接通过System.out.println(str1)和System.out.println(str2),因为str1,我甚至无法传递编译.因为str2,编译是正常的,我得到"null"和控制台窗口中的输出.为什么?
在@aioobe回答之后编辑:更多问题:
我想更多地了解"null".因为str2(引用变量)就像一个指针变量,所以它应该有一些东西(0/1位)(在这个指针变量占用的内存中).当它被初始化为null时,它是全0位还是null的字节码全为零?另一个问题是,如果我调用toString()方法上str2的str2.toString(),我得到了在运行时一个空指针错误.那么JVM是否检查引用变量是否为空?JVM如何知道它是null?JVM检查位str2?
大约一个问题空在Java中: 空的级联和字符串文字
我正和同事谈话,并且出现了null的主题.他在幕后告诉我,在.NET中它只是一个非常小的数字.我一直认为对象只是没有指向堆上任何内存的指针,但我不确定.
所以我希望社区可以为我们清理它; P
如果我声明一些字符串变量
String str = null;
Run Code Online (Sandbox Code Playgroud)
str?str被声明的变量?null内存中有值,那么null二进制的表示究竟是什么?