引用数据类型只能是null或者是一个地址值

比如:

public int[] copy(int[] arr){

   return null;
}

这个时候的是引用数据类型,返回值是null,而不是其他的。

 

基本数据类型的赋值有如下规律:

        int m = 5;
        int n = m;
        System.out.println(m + n);
        
        n = 20;
        System.out.println(m + n);

        //比如下面定义一个Order类
        Order o1 = new Order();
        o1.orderId() = 1001;

        Order o2 = new Order();
        System.out.println(o1.orderId() + o2.orderId(););

        o2.orderId() = 1002;
        System.out.println(o1.orderId() + o2.orderId(););    

这时候基本数据类型m和n的输出由上到下分别是:

55

520

发现改变n的时候,m并没有发生改变

但是下面的输出却是:

10011001

10021002

发现两个的值都发生了改变

为什么?

因为引用数据类型是传递地址的!赋值的是数据所保存的地址!!

因此当一个改变,全部改变

 

String 是引用数据类型,不是基本数据类型!!!

看下面一道题:

public class ValueTransferTest{
    public static void main(String[] args){
        String s1 = "Hello";
        ValueTransferTest test = new ValueTransferTest();
        test.change(s1);
        System.out.println(s1);
    }
    
    public void change(String s){
        s = "hi~";
    }
}

这时候输出的是什么?

答案:

Hello

因为:test.change(s1); 这是将s1的地址值赋值给了s,所以输出的任然是s1的值

而下面:s = "hi~"; 是 s 重新又创建的一个对象

 

 posted on 2020-10-28 21:08  又在化学楼迷路了  阅读(109)  评论(0)    收藏  举报