【问题标题】: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 string concat


【解决方案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 引用

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2010-11-13
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2023-03-14
              • 2013-05-07
              相关资源
              最近更新 更多