为什么String concat(String)方法的行为有所不同?

时间:2018-09-07 09:43:24

标签: java string immutability concat

我请检查下面的代码。

我可以理解未分配String s1,因此即使使用了concat(string)方法,它也会提供原始输出。

但是,在String s2的情况下,未分配任何变量,但可以进行串联。

有人可以解释吗?

package com.stringconcat.main;

public class StringConcat {

    public static void main(String[] args) {

        String  s1 = "Hello";
        s1.concat(" World");
        System.out.println("String s1 output: " + s1);

        String s2 = "Hello" /*s1*/;
        System.out.println("String s2 output: " + s2.concat(" World"));
    }
}

输出为: 字符串s1输出:Hello 字符串s2输出:Hello World

3 个答案:

答案 0 :(得分:2)

因为在第二种情况下,您将s2.concat(" World")结果连接到"String s2 output: ",所以您不会忽略它。

答案 1 :(得分:0)

Concat返回包含连接字符串的String的新实例。您只需通过不将其分配给变量来删除此串联的版本。

答案 2 :(得分:0)

这是因为s1Hello,而s2.concat(" World")是另一个 string对象,其连接字符串为Hello Worldconcat#string方法始终返回带有串联字符串的string对象的新实例。