String str=i与 String str=new String(“i”)一样吗?
时间: 2024-01-15 13:05:49 浏览: 74
Java String 和 new String()的比较与区别
5星 · 资源好评率100%
不完全一样。
在Java中,使用“=”运算符创建对象时,它将引用现有的对象。因此,当您执行以下操作时:
```
String str1 = "i";
String str2 = "i";
```
它们引用相同的字符串对象,因为字符串常量是在编译时创建的,并在内存中重用。
另一方面,当您使用new运算符创建字符串对象时,它会在堆中创建一个新的字符串对象。因此,当您执行以下操作时:
```
String str1 = new String("i");
String str2 = new String("i");
```
它们引用不同的字符串对象,即使它们包含相同的字符序列。
需要注意的是,如果您在创建字符串时使用new运算符,则会创建一个新的字符串对象,即使已经存在具有相同字符序列的字符串常量。因此,以下代码会创建两个不同的字符串对象:
```
String str1 = "i";
String str2 = new String("i");
```
因此,str1和str2引用不同的字符串对象。
阅读全文