T8Z*_*T8Z 1 java string stringbuilder
我对String和String Builder感到困惑.这是我的简单代码
StringBuilder sb1 = new StringBuilder("123");
String s1 = "123";
sb1.append("abc");
s1.concat("abc");
System.out.println(sb1 + " " + s1);
Run Code Online (Sandbox Code Playgroud)
SB1输出123ABC.没关系!因为它使用append方法.但是字符串s1应该是abc123,但它的输出是abc.为什么?什么是concat方法的目的?请解释一下.
谢谢
Jon*_*eet 15
.But String s1应为abc123,但输出为abc.
字符串在Java中是不可变的.concat不会更改现有字符串 - 它返回一个新字符串.所以如果你使用:
String result = s1.concat("abc");
Run Code Online (Sandbox Code Playgroud)
那么这将是"123ABC" -但s1仍然是"123".(或者更确切地说,值s1仍将是对内容为"123"的字符串的引用.)
对于String您可能期望更改内容的任何其他方法也是如此,例如replace和toLowerCase.当你在字符串上调用一个方法但不使用结果时(就像这里的情况一样),这几乎总是一个错误.
字符串是不可变的这一事实是StringBuilder首先存在的全部原因.
| 归档时间: |
|
| 查看次数: |
420 次 |
| 最近记录: |