首先必须明确java传递参数的规则:在java中所有的参数传递都是值传递,如果是常量值则传常量值或常量区的地址,对于对象类型,传递的是地址值的拷贝。
以下为示例代码:(jdk 1.7/8及以上)
public class ArgumentDemo { public String age; public static void argFun1(int a){ a=5; } public static void argFun2(String str){ str = str + " changed"; } public static void argFun5(String str){ str = new String("fff"); } public static void argFun3(ArgumentDemo arg){//与StringBuffer类似 arg.age = "14"; } public static void argFun4(ArgumentDemo arg){ arg = new ArgumentDemo(); arg.age = "20"; } public static void main(String[] args) { //情况1: int aa = 2; argFun1(aa); System.out.println(aa); //情况2: String aStr = "abc"; argFun2(aStr); System.out.println(aStr); //情况3: String aStrs = new String("abc"); argFun2(aStrs); System.out.println(aStrs); //情况6: String bStr = "abc"; argFun5(bStr); System.out.println("bStr:"+bStr); //情况4: ArgumentDemo argumentDemo = new ArgumentDemo(); argumentDemo.age = "11"; argFun3(argumentDemo); System.out.println(argumentDemo.age); //情况5: argFun4(argumentDemo); System.out.println(argumentDemo.age); } }

浙公网安备 33010602011771号