Java | 引用和对象的理解

本文详细阐述了Java中的对象和引用的概念,包括对象作为数据和操作的组合,引用作为操作对象的工具。讨论了引用的规则,如只能指向对象且一个对象可被多个引用共享。解释了null引用和解引用操作可能导致的空指针异常。此外,还提到了数组引用的特殊性以及引用的共享特性,即通过引用修改对象,所有指向该对象的引用都会看到变化。
摘要由CSDN通过智能技术生成
1. 基本概念
  • 对象(object)/实例(instance):一组相关数据的组织单位+围绕这组数据的各种操作(状态+方法),表现为内存上的一块区域
  • 引用(reference):提供给用户(程序员们)来间接操作对象的一个方式

Java不允许程序员直接接触对象,只能通过引用这种工具,间接的操作对象。(对象的大小远大于引用的大小)

例:

String s="Hello World";  // s 是String类型的引用,该引用指向了一个String类型的对象
int[] a={1,2,3,4,5};  //a 是int[]类型的引用,该引用指向了一个 int[] 类型的对象
2. 关于引用指向对象的一些规则:

1.只有引用指向对象,没有对象指向引用,也没有引用指向引用,更没有对象指向对象
2.一个引用可以不指向对象,但如果引用要指向对象上,则只能指到一个对象上;
3.一个对象可以同时被多个引用所指向;
4.操作引用,其实操作的是引用指向的对象。

3. null的理解
int a=null;

通常把这种情况称为:a等于空,或者a等于null。表达的意思是:a这个引用不指向任何对象。

String s=null; //s是一个String类型的引用,但目前还没有指向任何对象
4. 引用的操作符

引用支持的操作符:
赋值:=
比较:==,!=

引用的赋值运算,是让被赋值的引用指向该引用目前指向的对象。
引用的相等与不等比较,是比较两个引用是否指向同一个对象。

例:

int[] a={1,2,3,4,5};
int[] b={1,2,3,4,5};
a==b;  // false
a!=b;  // true

b = a;  // 让b指向a目前指向的对象
a == b;  // true
a != b;  // false

a=null;
a==b;  // false
a!=b;  //true

b=null;
a==b;  // true
a!=b;  // false
5. 解引用

解引用:通过引用 修改/获取 该引用指向的对象中的数据
eg:

sout(a1.length);
sout(a1[0]);
a1[0]=100;

当进行解引用操作时(. []),如果引用是null(不指向任何对象),就会发生NPE(空指针异常)

6. 数组引用的 []操作符

数组类型属于引用类型的一种,数组中的元素实际上放在一个对象(可以称其为数组对象)中。
例:

long[] array={1,2,3,4,5}; 

在这里插入图片描述
只有数组引用才支持 [] 操作符
eg:

int[] a={1,2,3,4,5};
System.out.println(a[0]);  // 获取a指向的数组对象的第一个元素

7. 引用的 “ 共享 ” 特性:
如果多个引用指向的是同一个对象,通过其中一个引用对对象进行修改,通过其他引用也可以看到该变化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值