【JAVA基础】10 Object类
1. Object类概述
- 是类层次结构的根类
- 每个类都使用 Object 作为超类
- 所有类都直接或者间接的继承自该类
- 所有对象(包括数组)都实现这个类的方法。
2. Object的构造方法
- public Object()
- 回想面向对象中为什么说:
- 子类的构造方法默认访问的是父类的无参构造方法
3. Object类的hashCode()方法
- Object类的hashCode()方法
案例演示
package com.heima.object; import com.heima.animal.Cat; public class Demo1_HashCode { /**
* @param args
*/
public static void main(String[] args) {
Object obj1 = new Object();
int num = obj1.hashCode();
System.out.println(num); //输出7309408 Cat c1 = new Cat();
System.out.println(c1.hashCode()); //输出26905665 Cat c2 = new Cat();
System.out.println(c2.hashCode()); //输出23994111 } }hashCode()方法
public int hashCode()
返回该对象的哈希码值。默认情况下,该方法会根据对象的地址来计算。
不同对象的,hashCode()一般来说不会相同。但是,同一个对象的hashCode()值肯定相同。
4. Object类的getClass()方法
- Object类的getClass()方法
案例演示
package com.heima.object; import com.heima.animal.Cat; public class Demo2_GetClass { /**
* @param args
*/
public static void main(String[] args) {
Cat c1 = new Cat();
System.out.println(c1.getClass()); Class clazz = c1.getClass(); // 获取该对象的字节码文件
String name = clazz.getName(); // 获取名称
System.out.println(clazz);
System.out.println(name); System.out.println(c1.hashCode());
System.out.println(clazz.hashCode());
} }public final Class getClass()
返回此对象的运行时类。
可以通过Class类中的一个方法,获取对象的真实类的全名称。
public String getName()
5. Object类的toString()方法
案例演示
package com.heima.object; public class Demo3_ToString { /**
* @param args
*/
public static void main(String[] args) {
Student s = new Student("Ann", 18);
String str = s.toString();
System.out.println(str); /*public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
} * toString方法源码显示,返回的结果是
* 类名 + @ + hashCode的十六进制变现形式
*
* 这么写,没有实际意义。
* toString的作用:可以更方便的显示属性值。通过重写toString方法。
*/ System.out.println(s); // 如果直接打印对象的引用,会默认调用toString()方法。
} }package com.heima.object; public class Student {
private String name;
private int age; public Student() {
super(); } public Student(String name, int age) {
super();
this.name = name;
this.age = age;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} @Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
} }Student类
6. Object类的equals()方法
案例演示
指示其他某个对象是否与此对象“相等”。
默认情况下比较的是对象的引用是否相同。
由于比较对象的引用没有意义,一般建议重写该方法。
package com.heima.object; public class Student {
private String name;
private int age; public Student() {
super(); } public Student(String name, int age) {
super();
this.name = name;
this.age = age;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} @Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
} @Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
} @Override
/*public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Student other = (Student) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}*/ public boolean equals(Object obj){
Student s = (Student)obj;
return this.name.equals(s.name) && this.age == s.age;
}
/*重写equals方法,由于传递的参数为Object obj,而多态中无法直接调用子类中的属性,需要
* 向下转型,故 Student s = (Student)obj;
* 从而获取到Student类中的属性:name和age。
* String类型的数据有equals方法,int数据作为基本数据类型,没有方法,直接使用"=="。
* */ }
- ==号和equals方法的区别
==是一个比较运算符号,既可以比较基本数据类型,也可以比较引用数据类型,基本数据类型比较的是值,引用数据类型比较的是地址值
equals方法是一个方法,只能比较引用数据类型,所有的对象都会继承Object类中的方法,如果没有重写Object类中的equals方法,equals方法和==号比较引用数据类型无区别,重写后的equals方法比较的是对象中的属性
【JAVA基础】10 Object类的更多相关文章
- 【Java基础之Object类(一)】Java中Object类中的所有方法(toString、equals、hashCode、clone、finalize、wait和notify等)详解(转载)
java中的hashcode.equals和toString方法都是基类Object的方法. 首先说说toString方法,简单的总结了下API说明就是:返回该对象的字符串表示,信息应该是简明但易于读 ...
- Java基础:Object类中的equals与hashCode方法
前言 这个系列的文章主要用来记录我在学习和复习Java基础知识的过程中遇到的一些有趣好玩的知识点,希望大家也喜欢. 一切皆对象 对于软件工程来说面向对象编程有一套完整的解决方案:OOA.OOD.O ...
- Java基础之Object类
类Object是类层次结构的根类.每个类都直接或者间接地继承Object类.所有对象(包括数组)都实现这个类的方法.Object类中的构造方法只有一个,并且是无参构造方法,这说明每个类中默认的无参构造 ...
- Java基础教程——Object类
Object类 Object类是Java所有类类型的父类(或者说祖先类更合适) <Thinking in Java(Java编程思想)>的第一章名字就叫"everything i ...
- Java基础-DButils工具类(QueryRunner)详解
Java基础-DButils工具类(QueryRunner)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果只使用JDBC进行开发,我们会发现冗余代码过多,为了简化JDBC ...
- Java基础之File类的使用
Java基础之File类的使用 1.File类的构造方法和常用方法 2.对File中listFile(FileNameFilter name)学习 3.与File文件类相关的实现 File类的构造方法 ...
- Java学习笔记二十四:Java中的Object类
Java中的Object类 一:什么是Object类: Object类是所有类的父类,相当于所有类的老祖宗,如果一个类没有使用extends关键字明确标识继承另外一个类,那么这个类默认继承Object ...
- Java常见对象Object类中的个别方法
Java常见对象Object类 public int hashCode() : 返回该对象的哈希码值. 注意:哈希值是根据哈希算法计算出来的一个值,这个值和地址值有关,但是不是实际地址值.你可以理解成 ...
- Java基础(43):Java中的Object类与其方法(转)
Object类 java.lang.Object java.lang包在使用的时候无需显示导入,编译时由编译器自动导入. Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类. O ...
随机推荐
- WEB安全——XML注入
浅析XML注入 认识XML DTD XML注入 XPath注入 XSL和XSLT注入 前言前段时间学习了.net,通过更改XML让连接数据库变得更方便,简单易懂,上手无压力,便对XML注入这块挺感兴趣 ...
- pssh远程套件工具
pssh远程套件工具 案例5:pssh远程套件工具 5.1问题 本案例要求使用pss ...
- UC接口文档
UC接口文档 一.功能描述 提供同步登录.退出.注册等相关接口,可以实现用户一个账号,在一处登录,全站通行. 二.测试环境UC地址 http://s1.p5w.net/uc/ 三.相关接口 UC_AP ...
- Github 骚操作
GitHub 竟然有这些骚操作,真是涨姿势 GitHub,不用过多介绍.一个面向开源及私有软件项目的托管平台,因为只支持 git 作为唯一的版本库格式进行托管,故名 GitHub. 作为「全球最大的程 ...
- 从零开始实现放置游戏(十三)——实现战斗挂机(4)添加websocket组件
前两张,我们已经实现了登陆界面和游戏的主界面.不过游戏主界面的数据都是在前端写死的文本,本章我们给game模块添加websocket组件,实现前后端通信,这样,前端的数据就可以从后端动态获取到了. 一 ...
- 用threejs实现三维全景图
网络上看到了3D全景图,发现threejs里面有一个库竟然可以实现,一下我贴出代码: <!DOCTYPE html> <html> <head> <meta ...
- Android | 教你如何在安卓上实现二代身份证识别,一键实名认证
@ 目录 前言 场景 开发前准备 android studio 安装 在项目级gradle里添加华为maven仓 在应用级的build.gradle里面加上SDK依赖 在AndroidManifest ...
- JMeter分布式压测-常见问题之(Server failed to start: java.rmi.server.ExportException: Listen failed on port: 0; nested exception )
问题描述: 在Linux环境启动jmeter-server时抛出了如下异常: 问题描述: 1.可能监听的端口被占用,修改端口号2.Server相关的rmi配置需要调整 解决方案: 在目录/apache ...
- testlink的api
testlink可以做很多你想象得到的事情,如API测试参数管理,Excel导入导出,快速模板创建测试用例,集成Jenkins. TestLink API第三方库: TestLink-API-Pyth ...
- 4. Object
1. Object.is( ); //用来判断,不同等 == 与===接近.NaN作出的调整 let obj={a:1,b:2}; Object.is(obj,obj);//true Object. ...