package com.rr.concurrent;
/**
* Created by isaac_gu on 2016/5/9.
*/
public class Test {
public static void main(String[] args) {
Integer i = new Integer(1);
change(i);
System.out.println(i); //1
String a = new String("a");
change(a);
System.out.println(a); //a
}
private static void change(Integer i) {
i = new Integer(2);
}
private static void change(String a) {
a = new String("A");
}
}
java方法的参数是值传递, 所以 i 把自己的值传给了change(Integer i )方法, 无论change方法里怎么修改都与 i 无关。
String 是有final关键字修饰的,所以它的值也是不能变的。change方法里面对a进行改变,相当于创建了一个新的对象。