String str="i"与 String str=new String(“i”)一样吗?

2020-08-11 11:21发布

4条回答
收货啦官方账号
2020-08-11 15:41

这道题目的答案是:不一样

先看一下在代码中的结果

 

不一样的原因很简单,因为他们不是同一个对象。

String str="i";

这句话的意思是把“i”这个值在内存中的地址赋给str,如果再有String str3="i";那么这句话的操作也是把“i”这个值在内存中的地址赋给str3,这两个引用的是同一个地址值,他们两个共享同一个内存。

而String str2 = new String("i");

则是将new String("i");的对象地址赋给str2,需要注意的是这句话是新创建了一个对象。如果再有String str4= new String("i");那么相当于又创建了一个新的对象,然后将对象的地址值赋给str4,虽然str2的值和str4的值是相同的,但是他们依然不是同一个对象了。

需要注意的是:String str="i"; 因为String 是final类型的,所以“i”应该是在常量池。

而new String("i");则是新建对象放到堆内存中。


一周热门 更多>