值为null和内存分配的字符串

时间:2015-01-06 12:46:15

标签: java string null heap-memory

如果String对象引用空值,是否为该值分配了任何内存?

e.g。 String str = ""; String str = null;

str的值是null,还是空字符串,这是在某处分配的吗?

TEXT ADDED 当String引用指向null时会发生什么(如何指定此null并且仍未为此"规范"?)分配内存,该信息如何?存储在哪里?因为引用实际上是存储地址。

2 个答案:

答案 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不同)