值为 null 的字符串和内存分配
String with value null and memory allocation
如果字符串对象引用空值,是否有为该值分配的内存?
例如String str = ""; String str = null;
str的值是null,或者是空字符串,这是在什么地方分配的吗?
TEXT ADDED 当 String 引用指向 null 时会发生什么(你如何指定这个 null 并且仍然没有为此 "specification" 分配内存?),如何这些信息存储?因为引用实际上存储了一个地址。
String nullObj = null;
String emptyStr= ""
两者完全不同。
在null
的情况下,它没有任何意义。但仍然分配内存。 null
32位系统占用4字节,64位系统占用8字节
对于空字符串 (""
),这是 100% 的字符串对象和内存分配。
案例-1 :
String s = null;
这里,内存只分配给引用s。 null
不是对象。所以没有为此分配内存。
案例-2 :
String s = ""`; // empty string
这里,内存分配给字符串引用s
和实际字符串值""
(是的,""
不同于null
)
如果字符串对象引用空值,是否有为该值分配的内存?
例如String str = ""; String str = null;
str的值是null,或者是空字符串,这是在什么地方分配的吗?
TEXT ADDED 当 String 引用指向 null 时会发生什么(你如何指定这个 null 并且仍然没有为此 "specification" 分配内存?),如何这些信息存储?因为引用实际上存储了一个地址。
String nullObj = null;
String emptyStr= ""
两者完全不同。
在null
的情况下,它没有任何意义。但仍然分配内存。 null
32位系统占用4字节,64位系统占用8字节
对于空字符串 (""
),这是 100% 的字符串对象和内存分配。
案例-1 :
String s = null;
这里,内存只分配给引用s。 null
不是对象。所以没有为此分配内存。
案例-2 :
String s = ""`; // empty string
这里,内存分配给字符串引用s
和实际字符串值""
(是的,""
不同于null
)