先看如下程序:
对于一般类对象:
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类型,它的值并不能改变!要改变的其值就是:重新生成一个对象。