博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java笔记--Object
阅读量:4030 次
发布时间:2019-05-24

本文共 2408 字,大约阅读时间需要 8 分钟。

java.lang.Object类是Java语言中的根类,即是所有类的父类。所有类对Object类都有继承关系,Object类中的所有方法子类也都可以使用,在对象实例化的时候,最终找的父类也是Object。

一、Java中Object对象方法

在这里插入图片描述

方法简介:
1.clone() 复制

2.getClass() 获取对象的class

3.equals() 对象值比较,重写equals方法必须重写hashcode,对象的约定,例如不重写,hashMap的kv不一致;

4.hashCode() 对象的hash值

5.tostring() 默认方法是 包名@改对象的hashCode十六进制表示

6.notify() 线程唤起

7.notifyall() 线程全部唤起

8.wait() 线程等待

9.finalize() 基本没啥用,垃圾回收前调用的方法

二、主要方法

Object类在API文档中共有11个方法,我们日常主要用到toString()和equals()方法

1、toString方法

①方法声明:

public String toSring(); // 返回该对象的字符串表示形式

默认的对象的字符串表示也就是对象的类型+@+内存地址值,而我们在实现其他类的过程往往需要根据对象的属性改变字符串的表达形式,因此就需要覆盖重写它。

②覆盖重写:

例如重写一个Student类中的toString()方法。

public class Student{
private String name; private int id; private int age; @Override public String toString(){
return "name=" + name + ", age=" + age + ", id=" + id; }/* Geter/Seter public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public void setName(String name) { this.name = name; }*/}
2、equals方法

①方法声明:

调用成员方法equals并指定参数为另一个对象,则可以判断这两个对象是否是相同的。

public boolean equals(Object obj); // 比较两个对象是否相同

如果没有覆盖重写equals方法,则执行Object类中默认的==运算符对两对象的地址进行比较,如果地址相同返回true,不同返回false。

②覆盖重写:

如果希望对具体对象的内容进行比较来判断两个对象是否相同则需要覆盖重写equals方法。例如对于Student类:

public class Student{
public String name; public int id; public int age; @Override public boolean equals(Object s){
if(this == s) return true; // 如果对象地址相同,则认为两对象相同 Student stu = (Student) s; // 把当前类型转换成Student类型 return this.age == stu.age && this.name.equals(stu.name) && this.id == stu.id; }}

三、Objects类

import java.util.Objects

在JDK7中添加了一个Objects工具类,它提供了一些方法来操作对象,它由一些静态的实用方法组成,这些方法是null-save(空指针安全的)或null-tolerant(容忍空指针的),用于计算对象的hashcode、返回对象的字符串表示形式、比较两个对象。

在比较两个对象的时候,Object的equals方法容易抛出空指针异常,而Objects类中的equals方法就优化了这个问题。方法如下:

public static boolean equals(Object a, Object b) // 判断两个对象是否相等。

源码实现:

public static boolean equals(Object a, Object b) {
return (a == b) || (a != null && a.equals(b));}

另外还有

public static boolean nonNull(Object o);// 用于判断对象是否为null,不是返回true,否则返回false// 与之对应public static boolean isNull(Object o); // 与其相反
public static 
T requireNonNull(T o); //检查对象o不为null,如果为null,则抛出空指针异常,否则返回o本身

转载地址:http://delbi.baihongyu.com/

你可能感兴趣的文章
iOS 序列化与反序列化(runtime) 01
查看>>
iOS AFN 3.0版本前后区别 01
查看>>
iOS ASI和AFN有什么区别
查看>>
iOS QQ侧滑菜单(高仿)
查看>>
iOS 扫一扫功能开发
查看>>
iOS app之间的跳转以及传参数
查看>>
iOS __block和__weak的区别
查看>>
Android(三)数据存储之XML解析技术
查看>>
Spring JTA应用之JOTM配置
查看>>
spring JdbcTemplate 的若干问题
查看>>
Servlet和JSP的线程安全问题
查看>>
GBK编码下jQuery Ajax中文乱码终极暴力解决方案
查看>>
jQuery性能优化指南
查看>>
Oracle 物化视图
查看>>
Multi-Task Networks With Universe, Group, and Task Feature Learning-阅读笔记
查看>>
A Survey of Zero-Shot Learning: Settings, Methods, and Applications-阅读笔记
查看>>
Cross-Domain Review Helpfulness Prediction -论文阅读
查看>>
NLP数据增强方法-(一)
查看>>
BERT+实体-百度ERNIE优化了啥
查看>>
NLP数据增强方法-动手实践
查看>>