Java 匿名对象和对象就是一个能否不断得到实例化对象内存引用的区别

本文详细解析了对象声明与实例化的过程,包括如何使用new关键字创建对象,并探讨了匿名对象的概念及其使用场景。此外,还介绍了如何通过内存地址引用进行对象间的比较。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对象的声明与实例化过程

类名 对象名 = new 类名() ;

Person p ; // 先声明一个 Person 类的对象 p
p = new Person() ; // 用 new 关键字实例化 Person 的对象 p

**
这里分别做了两件事:
1、 声明指向”由类所创建的对象”的变量
2、 利用 new 创建新的对象,并指派给先前所创建的变量。**
这里写图片描述
从图片中可以看出,当我们声明对象的时候只是在堆内存中存了一个变量,当用new实例化对象分配内存的时候会在堆内存中存储变量和方法的地址引用,方法存在方法区内,然后再把堆内存的地址引用赋值给声明的对象来保存。所以只有得到实例化对象的内存地址引用才能调用里面的属性和方法。

匿名对象

上面说了只有拿到实例化对象的内存地址引用才能调用类里面的方法和属性,而声明的对象的作用就是用来保存这个地址引用的,保证我们想用的时候可以直接拿到。那么如果我不声明一个对象来保存这个引用呢?那么,这个对象就是匿名对象,没有名字的对象,但是在内存中是真实存在的,但是用过一次,再也无法得到他的内存地址的引用,因为当我们再new的时候它又是另外一个实例化的对象了,所以它是一次性的。

new 构造方法();

对象的比较

比较对象时,如果两个对象的实例化对象的内存引用一样,那么他们的内容就一样,属于同一个实例化对象。

Person p1=new Person();
Person p2=p1;

这个时候他们的内存引用指向的是同一个实例化的对象。
==比较的是两个对象的内存引用是否一样,equse()比较的是两个对象的内容是否一样。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值