Java的变量赋值

下面展示的是基本数据类型的参数传递

package 类的重载;
/*
1、方法的形参的传递机制:值传递
    1、形参:方法定义时,声明的小括号内的参数
    2、实参:方法调用时,实际传给形参的参数
2、值传递机制:
    如果参数是基本数据类型,此时实参赋给形参的是实参真是存储的数据值
    如果参数是引用数据类型,此时实参赋给形参的是实参存储数据的地址值
    (引用型数据包括数组、对象、接口)
3.实例对象与局部变量的差别:
1.实例变量是声明在类内而不是方法中
2.局部变量是声明在方法中
3.局部变量没有默认值,使用前必须先初始化。而实例变量有默认数值,数字(包括char)的预设为0,boolean类型预设是false,对象的引用是null。
PS:方法的参数基本上和局部变量相同
 */

public class valueTransfer {
    public static void main(String[] args) {
        //交换两个值的操作
        int m = 10;
        int temp = m;
        int n = 20;
        valueTransfer test=new valueTransfer();
        test.Swap(m,n);
        System.out.println("2、m:" + m + ",n:" + n);
//        m=n;
//        n=temp;
//        System.out.println("m:"+m+",n:"+n);
    }
    public void Swap(int m,int n){
        int temp=m;
        m=n;
        n=temp;
        System.out.println("1、m:" + m + ",n:" + n);
    }
}

下面是引用型数据的形参的传递

package 类的重载;

public class valueTransfer2 {
    public static void main(String[] args) {
        Data data = new Data();
        data.m = 10;
        data.n = 20;

        valueTransfer2 test = new valueTransfer2();
        //将对象作为参数传递给方法swap()
        test.swap(data);
        System.out.println("2、m:" + data.m + ",n:" + data.n);
}

    public void swap(Data data){
        int temp=data.m;
        data.m=data.n;
        data.n=temp;
        System.out.println("1、m:" +data.m + ",n:" +data.n);
    }
}
class Data {
    int m;
    int n;
}

两种方式有什么结果,请大家自己上机体会二者的不i同