Java 如何处理最后的字符串?
将Java 如何处理最后的字符串?,java,string,types,Java,String,Types,将字符串设为final有什么好处吗?或者我们可以将字符串设为final吗?我的理解是,由于字符串是不可变的,所以没有必要将其设为final,这是正确的还是人们希望将字符串设为final 代码: 这意味着该变量甚至不能指向其他字符串 (是的,字符串对象是不可变的……但是变量可以指向字符串的不同实例。除非它是最终的。) (编辑--在您的示例中,您没有命名变量 final String x = "test"; )final表示引用不能更改,值不能更改。不管最后一个是什么,字符串总是不可变的 fina
字符串设为final
有什么好处吗?或者我们可以将字符串设为final
吗?我的理解是,由于字符串是不可变的,所以没有必要将其设为final,这是正确的还是人们希望将字符串设为final
代码:
这意味着该变量甚至不能指向其他字符串
(是的,字符串对象是不可变的……但是变量可以指向字符串的不同实例。除非它是最终的。)
(编辑--在您的示例中,您没有命名变量
final String x = "test";
)final表示引用不能更改,值不能更改。不管最后一个是什么,字符串总是不可变的
final String a = "test";
String b = "hello";
a = "world"; // error, a can't change reference to the String object "world"
b = "two"; // ok, b points to a different String object "two"
final
mean变量不能更改
final String s = "abcd";
// later in the code
s = "efgh"; // This will not compile
不可变意味着
String
上有一种方法可以更改其中的内容,例如setter
,append
,等等。这里一切都很好,但是还有两种方法“处理最终字符串””,正如您所说的,但是在“放置它们的位置”方面:
方法2使用起来很简单,但有点奇怪,因为您可以无条件地引用常量,这使得代码很难理解。
final
意味着引用永远不会更改<代码>字符串不变性意味着不同的东西;这意味着当创建字符串时(值,而不是引用,即:“文本”),它不能更改
例如:
String x = "Strings Are ";
String s = x;
现在s和x都引用相同的字符串。然而:
x += " Immutable Objects!";
System.out.println("x = " + x);
System.out.println("s = " + s);
这将打印:
x = Strings Are Immutable Objects
s = Strings Are
这证明创建的任何字符串
都不能更改,并且当任何更改发生时,将创建一个新的字符串
现在,对于final
,如果我们将x声明为final
,并尝试更改其值,我们将得到一个异常:
final String x = "Strings Are ";
x += " Immutable Objects!";
java.lang.RuntimeException: Uncompilable source code - cannot assign a value to final variable x
例外情况如下:
final String x = "Strings Are ";
x += " Immutable Objects!";
java.lang.RuntimeException: Uncompilable source code - cannot assign a value to final variable x
有最后一个字段的一个区别是,因为字符串是不可变的,所以它也可能是静态的
private final String a = "test";
效率略高,可能更清晰
private static final String a = "test";
说字符串是不可变的,这实际上意味着什么?我的印象是它的值不能更改,这是final关键字的函数,我的理解不对吗?这意味着你可以说x=“this”;和x=“that”,但没有像x.setValue(“新字符串”)这样的方法;。这不应该是“在字符串上没有方法”吗?