如果String对象引用空值,是否为该值分配了任何内存?
e.g。 String str = ""; String str = null;
str的值是null,还是空字符串,这是在某处分配的吗?
TEXT ADDED 当String引用指向null时会发生什么(如何指定此null并且仍未为此"规范"?)分配内存,该信息如何?存储在哪里?因为引用实际上是存储地址。
答案 0 :(得分:3)
String nullObj = null;
String emptyStr= ""
两者完全不同。
如果是null
,则表示什么都没有。但仍有内存分配。 null
如果是32位系统则需要4个字节,如果是64位系统则需要8个字节。
对于空字符串(""
),这是100%的String对象和内存分配。
答案 1 :(得分:1)
案例-1:
String s = null;
这里,内存仅分配给参考s。 null
不是对象。所以没有为此分配内存。
案例-2:
String s = ""`; // empty string
此处,内存分配给字符串引用s
以及实际字符串值""
(是的,""
与null
不同)