String concat()返回类型

时间:2018-02-15 10:37:09

标签: java string

在刷新我的知识时,似乎是下面的代码&惊讶它是如何工作的。如果有人知道,请解释一下。

class test1 {
    public static void main(String[] ar) {
        String s1 = "abc";
        s1.concat("ef");
        System.out.println(s1);
    }
}

实际输出:

abc 

预期产出:

compile time error since concat() return type is string & it is not returned.

2 个答案:

答案 0 :(得分:1)

String对象类型是不可变的。要获得连接值,您必须执行以下操作:

String s1 = "abc";
s1 = s1.concat("ef");

您不会收到编译时错误,因为没有必要将连接的返回值存储到变量中。

答案 1 :(得分:0)

调用方法时,不指定任何返回类型,可以指定要在其中存储方法声明指定的返回值的变量,如:

public String concat(String s){
     return this.value + s;
}

调用方法时:

"foo".concat("bar"); //return "foobar"

将返回值为“foobar”的String实例,但您不会将其归因于任何变量,即使在您的情况下,它也是允许的,因为它的结果没有意义连接将丢失。

现在,如果你试图解释你不能没有像这样的方法:

public String concat(String s){
     this.value + s;
}

你是对的,你不能实现一个用返回类型声明但不返回任何东西的方法。它不会编译。