JAVA基础----对象与引用?==与equals()?

求关注 求支持

1

对象与引用的区别

首先有这样一段代码

Student s=new Student();

谁是对象?谁是引用?

new Student()为对象,是根据Student类定义创建的实例,包含了该类定义的属性和方法。
s为引用,是指向对象的一个标识符,用于访问和操作对象

  1. 定义:
    对象(Object):对象是在内存中分配的实体,具有数据和方法。它是根据类定义创建的实例,可以通过引用来访问和操作。
    引用(Reference):引用是指向对象的一个标识符,用于访问和操作对象。它类似于指针,但在Java中,引用并不直接指向对象的内存地址,而是指向对象存储在堆中的位置。

  2. 内存关系:
    对象:对象在内存中占据一块连续的存储空间,包含实例变量和方法代码
    引用:引用本身占据一块存储空间,但它的值是对象的地址或标识符,用于定位对象在内存中的位置。

  3. 生命周期:
    对象:对象的生命周期从创建到销毁。一旦对象被创建,它可以被多个引用引用,直到没有引用指向它时,对象将被垃圾回收器回收。
    引用:引用的生命周期可以短暂或长久,可以随时更改引用的目标对象。当没有引用指向一个对象时,对象可能会被垃圾回收器回收,但引用本身仍然存在。

  4. 作用:
    对象:对象是实际存储和处理数据的实体,可以调用方法、访问属性等。
    引用:引用用于标识和访问对象,可以通过引用操作对象的方法和属性。

  5. 传递:
    对象:对象作为参数传递时,传递的是对象的引用(地址或标识符),而不是整个对象本身。
    引用:引用本身可以被赋值给其他引用,这样多个引用可以指向同一个对象。

对象的相等和引用相等的区别

对象的相等一般比较的是内存中存放的内容是否相等。
引用相等一般比较的是他们指向的内存地址是否相等。

== 和 equals() 的区别

对于基本类型和引用类型来说,等号作用效果是不同的:
对于基本数据类型来说:== 比较的是值。
对于引用数据类型来说,== 比较的是对象的内存地址。

因为 Java 只有值传递,所以,对于 == 来说,不管是比较基本数据类型,还是引用数据类型的变量,其本质比较的都是值,只是引用类型变量存的值是对象的地址。

equals() 方法存在两种使用情况:
类没有重写 equals()方法:通过equals()比较该类的两个对象时,等价于通过“==”比较这两个对象,使用的默认是 Object类equals()方法。
类重写了 equals()方法:一般我们都重写 equals()方法来比较两个对象中的属性是否相等;若它们的属性相等,则返回 true(即,认为这两个对象相等)。

总结

跪谢查阅
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小橙菜鸡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值