这两种初始化String的方法有什么区别?

Lul*_*ija 2 java

String obj = null;
obj= new String("Samuel");

//vs

String obj = null;
obj="Samuel";
Run Code Online (Sandbox Code Playgroud)

这两种初始化String的方法有什么区别吗?

Boz*_*zho 7

是.并且总是喜欢第二种选择.

第一个创建一个不必要的字符串实例.字符串文字(字符串周围的两个引号)自己创建一个字符串对象.然后,如果您使用第一个选项,则会创建另一个不必要的实例.

当您仅使用字符串文字(第二个选项)时,jvm使用一个表来存储规范字符串对象.因此,对于声明的所有字符串"Samuel",JVM中只有一个实例.但是如果你使用String(str)构造函数,你将拥有更多的实例,这意味着更多的内存.

要在评论中回答后续问题:这仅适用于字符串.所有其他对象都是通过构造函数创建的,因为它们没有指定的文字.
例如,你需要Car car = new Car("honda", "civic").简单地拥有("honda, "civic")不是有效的语法 - 无法知道您创建的是什么类型.

  • 谢谢,他们现在走了.但是为了记录:当你在答案中看到"-1"只是为了给另一个"-1"时不要相信 (2认同)
  • 我觉得我在问题*和*答案上都看到了很多"同情的支持者". (2认同)