String字符串拼接陷阱

来源:互联网 发布:js中window对象的方法 编辑:程序博客网 时间:2024/04/29 10:14

先看如下程序:

对于一般类对象:

public class A {
int age = 10;
A(){}
}

public class Test{
public static void changeAage(A a){
a.age = 20;
}
public static void main(String[] args){
A a = new A();
changeAage(a);
System.out.println(a.age);

}

结果我们应该都能猜到:是的,值改变为:20   (传递的为a对象的引用(地址))

再看如下程序:

public class Test {
public static void changePara(String s){
s = s+"world";
}

public static void main(String[] args){
String s = "Hello";
changePara(s);
System.out.println(s);
}
}

输出的结果实多少? Helloworld?, 

实际上是:Hello


//我们在看以下程序你就知道为什么输出的是Hello,而不是HelloWorld了

public class Test{
public static void main(String[] args){

String s2 = "123";
System.out.println(s2.hashCode());
s2 = s2 + "456";
System.out.println(s2.hashCode());
}
}

结果是:

48690
1450575459

原来他们并不是同一个对象的引用,他们的值发生了变化。

原因:String类型数据其实是final类型,它的值并不能改变!要改变的其值就是:重新生成一个对象。




0 0
原创粉丝点击