java参数传递


package Practice;

//  *****参数的传递问题****
//  1.按值传递
//  基本类的方法做参数********     直接将参数值传递给方法            ***eg:meth1
//  2.引用调用传递
//  对象作为方法的参数传递*****   将参数通过引用调用(不是参数值)传递给方法  ***eg:meth2
//  对象的类找参数传递
class Test1 {
    void meth1(int i, int j)//此处将基本类型值作为方法的参数
    {
        i *= 2;
        j /= 2;
    }
}
class Test2{
    int a,b;

    Test2(int i,int j)//类的构造方法
    {
        a = i;
        b = j;
    }
    //  创建一个Test2的类的变量o作为方法的参数
    void meth2(Test2 o)//此处将对象作为方法的参数
    {
        o.a *= 2;
        o.b /= 2;

    }
}

public class Parameters {
    public static void main(String[] args)
    {
        Test1 ob1 = new Test1();
        Test2 ob2 = new Test2(10,20);
        int a = 10,b = 20;//此处声明a 和b的值
        System.out.println("基本类做参数,参数值被传递+a and b befor call:"+ a + " " + b);//传递前a=10,b=20
        System.out.println("对象做参数,引用参数被传递a and b befor call:"+ ob2.a + " " + ob2.b);//传递前a=10,b=20

//      前面定义过a和b,他两有固定的值。
//      虽然a和b在该方法(meth1)中值被改变了;但是在输出时还是输出方法外的值(之前定义的值)
//      基本类作为方法参数时,值在后面被方法调用时,不受方法内的程序影响,即为按值传递
        ob1.meth1(a,b);

//      此处的方法中的参数为一个对象,对象中本身有两个属性a,b
//      当有参数传进来时,会依次将传入的参数赋给两个属性,从而使对象的内部参数改变
        ob2.meth2(ob2);//对象通过引用参数来传递
        System.out.println("a and b after call:"+ a +" " + b);//传递后a=10,b=20
        System.out.println("a and b after call:"+ ob2.a +" " + ob2.b);//传递后a=20,b=10

    }
}
总结:java中参数的传递
     1.当基本类型作为方法中的参数时,传入的参数,只在方法中的程序起作用,离开方法后,本身的值不改变。(按值传递)
     2.当对象作为方法中的参数时,传入的对象参数,在对象内部也起作用,使他在方法外的值也被改变。(对象引用调用传递)
posted @ 2018-12-18 20:01  BISTER  阅读(6)  评论(0)    收藏  举报  来源