为啥 Java 的 concat() 方法啥都不做?
Posted
技术标签:
【中文标题】为啥 Java 的 concat() 方法啥都不做?【英文标题】:Why does Java's concat() method not do anything?为什么 Java 的 concat() 方法什么都不做? 【发布时间】:2011-02-18 14:44:27 【问题描述】:这段代码:
String s = "TEST";
String s2 = s.trim();
s.concat("ING");
System.out.println("S = "+s);
System.out.println("S2 = "+s2);
结果如下:
S = TEST
S2 = TEST
BUILD SUCCESSFUL (total time: 0 seconds)
为什么“TEST”和“ING”没有连接在一起?
【问题讨论】:
文档链接:java.sun.com/j2se/1.4.2/docs/api/java/lang/… 同样的原因trim()
什么也不做。
【参考方案1】:
字符串是immutable,这意味着您不能在Java 中更改字符串。 concat() 返回一个新的串联字符串。
String s = "TEST";
String s2 = s.trim();
String s3 = s.concat("ING");
System.out.println("S = "+s);
System.out.println("S2 = "+s2);
System.out.println("S3 = "+s3);
【讨论】:
【参考方案2】:因为String
是不可变的 - 类String
不包含更改String
对象本身内容的方法。 concat()
方法返回一个包含操作结果的新 String
。而不是这个:
s.concat("ING");
试试这个:
s = s.concat("ING");
【讨论】:
【参考方案3】:我想你想做的是:
s2 = s.concat("ING");
concat 函数不会改变字符串 s,它只是返回 s 并附加参数。
【讨论】:
【参考方案4】:concat
返回一个字符串,因此您基本上是在调用 concat 而不存储它返回的内容。
试试这个:
String s = "Hello";
String str = s.concat(" World");
System.out.println(s);
System.out.println(str);
应该打印:
Hello
Hello World
【讨论】:
【参考方案5】:.concat()
方法返回新的连接值。
你在那里做了s.concat("ING")
--> 这给出了返回值“测试”。但是你必须在声明的变量中接收它。
如果你做了s=s.concat("ING");
,那么“s”的值会变成“TESTING”
【讨论】:
【参考方案6】:因为在任何 String obj as 上调用 concat() 时,String 是不可变的
字符串 s="abc"; 新的 String obj 由 s 在 String pool ref 中创建
s = s.concat("def"); 这里又创建了一个带有 val abcdef 的 String obj 并由 s 引用
【讨论】:
以上是关于为啥 Java 的 concat() 方法啥都不做?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 QWebFrame::evalutateJavaScript 在这种情况下啥都不做?
为啥 justify-content space-between 啥都不做?