首先必须明确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);
    }
}

posted on 2020-08-23 18:00  风语者未来  阅读(195)  评论(0)    收藏  举报