我对Java的兴趣很短,我想知道:字符串实际上是对象,但我听说在给它们赋值和检索时,它们的行为非常不同,几乎就像它们是原始类型一样。。。有人能说得更清楚些吗?与其他对象相比,当我声明/编辑/访问字符串时,我到底需要关心什么?
首先,Java有字符串文本。这意味着您可以编写String foo = "bar";
。字符串是不可变的(一旦创建了一个,就不能更改它),它帮助JVM实现一个称为"字符串池"的技巧。字符串文字存储在池中,在下面的示例中,foo
和bar
都可以指向字符串的一个实例。String foo = "baz"; String bar = "baz"
。你甚至可以将它们与==
进行比较,但你永远不应该这样做。无论如何,equals()
方法(您在Java中使用它来比较字符串)可能会从中受益,因为如果两个变量都指向同一个字符串,它就不需要比较字符串。
请查看本主题以了解更多信息什么是Java字符串池以及如何使用"Java字符串池";s";与新字符串("s")不同?