楼上说的赋值应该是指 s.concat(" java")没有赋值作者: 彭波 时间: 2013-3-5 13:49
public class Demo0 {
public static void main(String[] args){
String s = "welcome";
s += " to";
s = s.concat(" java");//此处加赋值语句
System.out.println(s);//输出 welcome to java
System.out.println(s.concat(" 2java"));
//输出 welcome to 2java
}
} 作者: 张权 时间: 2013-3-5 15:04
看了一下上面的回答,都回答很正确,不过这个问题我以前也迷惑过,所以我再来解释一下吧:
class Demo {
public static void main(String[] args) {
String s = "welcome";
s += " to";//这里如楼上所说,是创建了一个新的对象s ,而这个s的值是 welcome to
//接下来,你的代码是s.concat(" java"),这里意思是把 welcome to 连上java,这里其实又创建了一个新的对象
//s = s.concat(" java");//注意我这里和你的源代码的区别,我在这里相当创建一个新对象,并把这个值赋给了S,打印S,就得到
//welcome to java,而你的代码s.concat("java")确实加了java,但这是一个新的对象,但是你并没有赋值给s,所以打印的结果当然是
//你之前的对象s 啊,也就是welcome to.
s = s.concat(" java");
System.out.println(s);//打印结果是welcome to java