字符串是java中的一个类。在声明和分配字符串时,说String name = "Paul"是正确的,尽管要从 java 类中实例化一个对象,我们使用String name = new String(); 以名称为对象,我想知道为什么我们可以为对象分配一系列字符“保罗”。这个是在什么概念下工作的,它是如何工作的?
问问题
1238 次
2 回答
6
在 Java 代码中
"Paul"
是一个字符串文字和
String name
String
具有名称的类型变量name.
字符串文字始终是类型
String
As123
是一个int
字面量并且是一个名为int number
的类型变量,遵循这两个语句都是合法的,因为赋值左侧和右侧的类型匹配:int
number
int number = 123;
String name = "Paul";
于 2013-05-14T11:49:40.800 回答
5
那是因为隐式字符串 -"..."
也被视为对象。
在封面下,JVM 会在所谓的“对象”中查找类似的“对象”,String pool
然后如果在那里找到它,它会返回该对象(而不是创建新对象),否则会创建新对象并将其放入字符串池中。
这是为了提高内存效率,和 "Paul" 所以 new String("Paul") 不一样。
这是可能的,因为我们知道,字符串在 Java 中是不可变的。
您可以通过搜索关键字“字符串池”来阅读有关此行为的更多信息。
于 2013-05-14T11:44:59.723 回答