教育行业A股IPO第一股(股票代码 003032)

全国咨询/投诉热线:400-618-4000

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

更新时间:2023年03月31日08时53分 来源:传智教育 浏览次数:

好口碑IT培训

  在Java中,这两行代码并不完全相同。

  第一行代码是使用字符串字面量创建字符串对象,而第二行代码是使用字符串构造函数创建字符串对象。具体来说,第一行代码创建了一个新的字符串对象,并将其赋值为“i”。而第二行代码创建了一个新的字符串对象,其值也是“i”,但是它是通过使用字符串构造函数显式创建的。

  虽然这两种方法都可以创建字符串对象,但是它们之间的一个重要区别是,当使用字符串字面量创建字符串对象时,Java编译器会在内存中创建一个字符串常量池,将所有相同的字符串共享在这个常量池中,从而提高了性能和内存使用效率。而使用字符串构造函数创建字符串对象时,则没有这种优化。

  以下是代码演示:

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

System.out.println(str1 == str2);  // false
System.out.println(str1.equals(str2));  // true

  在这个例子中,我们首先使用字符串字面量创建了一个字符串对象str1,然后使用字符串构造函数创建了另一个字符串对象str2。由于这两个对象在内存中的引用地址不同,所以str1 == str2的比较结果为false。但是,由于它们的值相同,所以str1.equals(str2)的比较结果为true。

0 分享到:
和我们在线交谈!