方法1:
String s = "abc";
方法2:
String s = new String("abc");
解释方法1:
所有的字符串是常量,在常量池里放着,在编译期就产生了,所以String ss = "abc"产生的ss与s是指向同一个内存地址。
当遇到String a = "Hello"; 这样的语句时,Java会先在字符串池中寻找是否已经存在"Hello"这个字符串,如果没有,则建立 字符串"Hello"对象,然后变量 a 指向这个地址;然后遇到语句String b = "Hello",这时字符串池中已经有 "Hello"了,所 以直接让变量b也指向这个地址,省去了重新分配的麻烦。
问题1:方法1里创建了两个对象,一个是"abc",还有一个就是指向"abc"的引用对象。这句话对吗?
若是真的创建了两个,是否马上有一个成为“垃圾”了呢?因为以后的代码里只会用到一个,即s
但“垃圾”是指堆内存的,此时的两上对象均不占堆内存,与“垃圾”无缘。
解释方法2:
先为变量 c 开辟空间,然后将值写入空间。
String对象如何获取
最新推荐文章于 2024-08-15 14:47:41 发布