在
的两种情况下,为String对象分配了多少内存String s = new String("abc");
String s = "abc";
答案 0 :(得分:1)
有许多s = new String("abc");
s2 = new String("abc");
等等将导致为此给定字符串分配多个内存。
使用第二种方式 - String s = "abc";
String s2 = "abc";
...无论您使用此abc
值制作“新”字符串多少次,都只会分配一次内存。
在两种方式中,一个对象应使用相同的内存大小。
答案 1 :(得分:1)
String s = new String("abc");
用于表示上面分配的字符串的空间取决于平台。对于32位JVM,String占用大约10个32位字。但是,如果以特定的方式创建String,那么这些单词中的5个将与原始的String文本共享...至少使用标准的Java 6类库。
String s = "abc";
根本不分配字符串。而是将对现有字符串文字的引用分配给s
。