当前位置: 首页 > news >正文

建站网站推荐icp域名备案查询系统

建站网站推荐,icp域名备案查询系统,18款未成年禁止下载的app,背景网站建设object类常见方法/*** native 方法&#xff0c;用于返回当前运行时对象的 Class 对象&#xff0c;使用了 final 关键字修饰&#xff0c;故不允许子类重写。*/ public final native Class<?> getClass() /*** native 方法&#xff0c;用于返回对象的哈希码&#xff0c;主…

object类常见方法

/*** native 方法,用于返回当前运行时对象的 Class 对象,使用了 final 关键字修饰,故不允许子类重写。*/
public final native Class<?> getClass()
/*** native 方法,用于返回对象的哈希码,主要使用在哈希表中,比如 JDK 中的HashMap。*/
public native int hashCode()
/*** 用于比较 2 个对象的内存地址是否相等,String 类对该方法进行了重写以用于比较字符串的值是否相等。*/
public boolean equals(Object obj)
/*** native 方法,用于创建并返回当前对象的一份拷贝。*/
protected native Object clone() throws CloneNotSupportedException
/*** 返回类的名字实例的哈希码的 16 进制的字符串。建议 Object 所有的子类都重写这个方法。*/
public String toString()
/*** native 方法,并且不能重写。唤醒一个在此对象监视器上等待的线程(监视器相当于就是锁的概念)。如果有多个线程在等待只会任意唤醒一个。*/
public final native void notify()
/*** native 方法,并且不能重写。跟 notify 一样,唯一的区别就是会唤醒在此对象监视器上等待的所有线程,而不是一个线程。*/
public final native void notifyAll()
/*** native方法,并且不能重写。暂停线程的执行。注意:sleep 方法没有释放锁,而 wait 方法释放了锁 ,timeout 是等待时间。*/
public final native void wait(long timeout) throws InterruptedException
/*** 多了 nanos 参数,这个参数表示额外时间(以纳秒为单位,范围是 0-999999)。 所以超时的时间还需要加上 nanos 纳秒。。*/
public final void wait(long timeout, int nanos) throws InterruptedException
/*** 跟之前的2个wait方法一样,只不过该方法一直等待,没有超时时间这个概念*/
public final void wait() throws InterruptedException
/*** 实例被垃圾回收器回收的时候触发的操作*/
protected void finalize() throws Throwable { }

解读:

  • 被final修饰的类表示不可改变,因为所有的类都属于object类的子类,所以所有类都不能重写被final修饰的方法。
  • 在Java中,native是一个方法修饰符关键字,用于表示该方法的实现不是用Java编写的,而是用其他语言(如C或C++)编写的本地代码。这些方法通过Java本地接口(JNI)与Java虚拟机交互

Java中的值传递

  • 基本数据类型传递:修改方法内的基本类型参数不会影响原始值。

  • 引用数据类型传递:修改方法内的引用类型参数(例如数组或对象)会影响原始对象,因为副本和原始引用指向同一个对象。但是,如果尝试改变引用本身(即让副本引用另一个对象),则不会影响原始引用。对于引用类型,传递的是引用的副本(内存地址的副本)简单说:拷贝了钥匙,但开的还是同一把锁。 但正是因为传递的是内存地址的副本,再次对引用对象赋值时却不会改变引用本身。

==与equals()方法

  • 对于基本数据类型来说,== 比较的是值。
  • 对于引用数据类型来说,== 比较的是对象的内存地址。

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

object类的equals方法

public boolean equals(Object obj) {return (this == obj);
}
  • 没有重写equals方法时,equals方法就是==

重写后的equals方法

String 中的 equals 方法是被重写过的,因为 Objectequals 方法是比较的对象的内存地址,而 Stringequals 方法比较的是对象的值

当创建 String 类型的对象时,虚拟机会在常量池中查找有没有已经存在的值和要创建的值相同的对象,如果有就把它赋给当前引用。如果没有就在常量池中重新创建一个 String 对象。

public boolean equals(Object anObject) {if (this == anObject) {return true;}if (anObject instanceof String) {String anotherString = (String)anObject;int n = value.length;if (n == anotherString.value.length) {char v1[] = value;char v2[] = anotherString.value;int i = 0;while (n-- != 0) {if (v1[i] != v2[i])return false;i++;}return true;}}return false;
}

解读:

  1. 先比较地址if (this == anObject) → 如果是同一个对象,直接返回true (这一步是优化)

  2. 检查类型if (anObject instanceof String) → 如果不是String类型,直接返回false

  3. 比较长度if (n == anotherString.value.length) → 长度不同直接返回false

  4. 逐字符比较while循环逐个比较字符,有任何不同就返回false

  5. 全部相同:所有字符都相同,返回true

小结:

本篇博客主要介绍了object类和它的重要方法,同时介绍了Java中的值传递,进而引出equals方法,在后面解读源码时,我们还会讲一讲它和hashcode()的难解难分。希望能带给你启发!

http://www.dtcms.com/a/495192.html

相关文章:

  • 智能美颜引擎:美颜SDK如何实现自适应芯片性能优化
  • Java中的boolean与Boolean
  • Flutter高级进阶教程(视频教程)
  • Rocketmq 分布式事务 两阶段提交
  • 骑行,团骑和独骑冲突吗?
  • 对网站和网页的认识鞍山信息网便民信息
  • 《算法通关指南---C++编程篇(2)》
  • 【论文速递】2025年第29周(Jul-13-19)(Robotics/Embodied AI/LLM)
  • 网站 模板更改网站备案
  • VR反诈一体机-VR预防诈骗模拟系统-VR防诈骗体验馆方案
  • 大型网站seo课程沈阳关键词优化费用
  • Kubernetes PVC 扩容完全指南:静态迁移 vs 动态扩容
  • 【题解】B2613【深基1.习5】打字速度
  • Elastic DevRel 通讯 — 2025 年 10 月
  • Java面试基础题
  • 博客标题:快速解决 VS Code 终端运行 petalinux-config 界面显示错乱问题
  • 强化学习【Monte Carlo Learning][MC Basic 算法]
  • 杭州网站开发制作公司小程序源码出售
  • 从0到1学习Qt -- 创建项目
  • dw做网站基础wap网站开发价格
  • 【实时Linux实战系列】实时应用的多版本共存与无缝升级
  • Linux小课堂: 文件操作核心命令深度解析(cp、mv 与 rm 命令)
  • 【大模型小实验】考一考qwen3-8b对于历史人物的理解
  • 商家建设网站的好处公司单页设计
  • 鹿泉区住房建设局网站网站建设公司 项目经理 的工作指责
  • 字体设计网站有哪些免费网站模块在线制作教程
  • YOLOv3
  • 腾讯元宝-Deepseek 的文章摘要功能测试
  • Java Flight Recorder和Java Mission Control的使用
  • Magnus:面向大规模机器学习工作负载的综合数据管理方法