Java引用和对象的理解(二)

关于形参和实参

  1. Java中形参的改变不会影响实参,与形参的数据类型无关
    基本类型
  	    int a = 10;
        int b = 5;
        swap(a,b);
        System.out.println(a);
        System.out.println(b);
}
    private static void swap(int a, int b) {
        int t=a;
        a = b;
        b = t;

运行结果:变量a,b并没有被交换在这里插入图片描述

引用类型

    	long[] a = {1,2,3,4};
        long[] b = {100,200,300};
        swap(a,b);
        System.out.println(Arrays.toString(a));
        System.out.println(Arrays.toString(b));
    }
    private static void swap(long[] a, long[] b) {
        long[] t = a;
        a = b;
        b = t;
    }

运行结果:可以看到数组a,b的元素并没有完成交换
在这里插入图片描述
2. 引用类型的共享特性
可以根据共享的特性,实现再方法中修改数据,让方法外看到

        long[] a = {1,2,3,4};
        swap(a,0,3);
        System.out.println(Arrays.toString(a));
    }

    private static void swap(long[] array, int index1, int index2) {
        long t = array[index1];
        array[index1] = array[index2];
        array[index2] = t;

运行结果:可以看到首尾元素的值在方法内部发生了交换,在方法外可以通过a引用观察到。
在这里插入图片描述

关于概念的阐述

  1. 引用
    是提供给程序员间接操作对象的一个工具/方法。
  2. 对象
    一组相关数据(基本/引用)+与数据相关的一组操作
    在内存中:一块区域,存储着相关的数据
  3. 引用可以指向对象,也可以不指向对象(null),但对象不可以指向对象。
  4. 引用支持的操作(=, ==, !=, .[ ]
    分别是赋值,指向同一对象,指向不同对象,获取,修改操作。

关于二维数组

二维数组有两种方式定义:
1.

    long [][]a = {
                {1,2,3},
                {4,5,6},
                {11,12,13,14},
                {45,46,46,78}
        };
      
       long[][] a = new long[5][];

如上方式定义出二维数组a,其元素数据类型为long[ ] (引用类型)。
1.该变量未被赋值,则值为默认值,即a[0] == a[1] ==…==a[4] ==0。
2.继续解引用会引起空值异常,操作a[0][0] = 10; 报错NPE。

对二维数组可采用图形来理解。圆圈代表引用,方框代表对象
引用的大小是相同,对象的大小可不同。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值