不一样,因为内存的分配方式不一样。String str = "i"的方式,Java虚拟机会将其分配到常量池中;而String str = new String("i")则会被分到堆内存中。

代码示例:

String x = "叶痕秋";
String y = "叶痕秋";
String z = new String("叶痕秋");
System.out.println(x == y); // true
System.out.println(x == z); // false

String x = "叶痕秋" 的方式,Java 虚拟机会将其分配到常量池中,而常量池中没有重复的元素,比如当执行“叶痕秋”时,java虚拟机会先在常量池中检索是否已经有“叶痕秋”,如果有那么就将“叶痕秋”的地址赋给变量,如果没有就创建一个,然后在赋给变量;而 String z = new String(“叶痕秋”) 则会被分到堆内存中,即使内容一样还是会创建新的对象。

相关文章:

  • 2021-12-23
  • 2021-09-22
  • 2022-01-23
  • 2021-11-14
  • 2022-01-21
  • 2021-04-27
猜你喜欢
  • 2021-04-13
  • 2022-12-23
  • 2021-08-24
  • 2022-12-23
  • 2021-05-21
  • 2021-09-18
  • 2022-12-23
相关资源
相似解决方案