首先,
什么是对象:是类的实例化。是一组相关数据的组织单位(状态)围绕这组数据的各种操作(方法)
【数据(属性)有两种类型:基本类型和引用类型】
而
什么又是引用?:用来操作对象。
基本要点:【以下图片内容○代表“引用”,□代表“对象”】
1·引用指向对象
a.同一时刻,要么指向对象,要
么不指向对象(null)
b.对象不能指向引用,也没有对
象指向对象一说。
可以将引用理解为《火影忍者》中的傀儡术,勘九郎利用查克拉线来控制蝎的傀儡,使其发动攻击。引用—>勘九郎使用查克拉线,对象就是—>蝎。
2、引用支持的运算符有哪些?
仅有:【a.赋值运算符“=” ,b.比较运算符 “==、!=”】这三个运算符。
3、解引用运算符
通过引用操作对象——来获取对象中的值/修改对象中的数据。
例:int [] a=new int []{1,2,3,4}
“.”:通过a.length来获取a所指向对象的长度。
“[ ]”:通过a[0]来获取a所指向对象第零号下标的值:1。
切记:如果解引用时,引用不指向任何对象(null),就会报错。例如:a指向null时,a.length,会出现NullpointerException“索引越界”的异常提示。
4、引用具备“共享”的特性
eg:long [] a={1,2,3,4,5};
long [] b=a //让a、b指向同一个对象。
a[0]=99; //通过a解引用修改了对象中的数据
System.out.println(b[0])显示出的是什么值? 答案:99
解析:因为a与b同时指向同一个对象,通过a解引用修改对象数据后,再通过b对其对象数据进行获取,获取得到的结果就是99。
初步了解之后,让我们通过二维数组来深入了解对象与引用。
【预备知识:java中的数据类型(2种)1、基本数据类型(byte/short/int/long/char/float/double/boolean)2、引用数据类型】
数组:long []是引用类型,所有的数组类型都是引用类型。数组的元素,长度信息都放在对象中(数组对象)
long []a=null;
a=new long[]{1,2,3,4,5};
long []b=a;
long[][] a=null
long[][] a=new long[5][ ]:定义了一个元素类型是long[](引用类型)的数组,数组长度是5。
补充知识:【变量的默认值:是零的变形】
数值类型 默认值——0
boolean 默认值——false
引用类型 默认值——null
eg:long[]a=new long[5];默认数组对象中的元素是0;
此时long[][]a=new long[5][];理解为:默认数组对象中的元素是long[],该数组长度是5;
所以,a[0]=a[1]=a[2]=a[3]=a[4]=null,即所有的元素(引用)不指向任何对象。
想一想:
a[0][0]=10,执行该操作时,会发生什么?
解析:通过a引用,找到其指向的对象。
a[0]得到其下标为0的元素——long[]——不指向任何对象
所以通过a[0][0]找到其指向对象的元素,将其修改为10,会报错!是因为a[0]==null,所以无法进行对指向空的引用进行解引用。
接下来再通过几个例子来深入理解一下:
例1:试画出以下改动后的图:
a[0]=new long[3];
a[1]=new long[3];
a[1][2]=99;
例2:画出如下二维数组的效果图
答案:
拓展问题:
long [] t=a[2];
a[2]=a[3];
a[3]=t;
System.out.println(Arrays.toString(t));
结果的效果图: