为什么Java允许将字符串文字分配给String对象?

时间:2013-05-14 11:42:09

标签: java string oop

String是java中的一个类。在声明和分配字符串时,正确地说 String name =“Paul” 虽然要从java类实例化一个对象,我们会做 String name = new String(); 将name作为对象,我想知道为什么我们可以为对象分配一系列字符“Paul”。根据这个概念的作用是什么,它是如何工作的?

2 个答案:

答案 0 :(得分:6)

在Java代码中

"Paul"

是字符串文字和

String name

String类型的变量,名称为name.

Java Language Specifications, section 3.10.5州:

  

字符串文字始终为String

类型

由于123int字面值而int numberint类型的变量,名称为number,因此以下两种陈述都是合法的,因为在作业匹配的左侧和右侧键入:

int number = 123;
String name = "Paul";

答案 1 :(得分:5)

那是因为隐式字符串 - "..."也被视为对象。

在封面下,JVM在所谓的String pool中查找类似的“对象”,然后如果它在那里找到它,则返回该对象(而不是创建新对象),否则创建新对象并将其放入String池。

这是为了提高内存效率,而“Paul”所以新的String(“Paul”)不一样。

这是可能的,因为我们知道,字符串在Java中是不可变的。

您可以阅读有关此行为的更多信息,请搜索关键字“字符串池”。