这个类很有意思,是所有类的爹,这个类中定义的东西是所有类中具备的。
给大家上代码,来理解这个。

package duotai;
class d{}
public class object_d {public static void main(String[] args) {d d1=new d();d d2=new d();System.out.print(d1.equals(d2));}
}
输出:false//d1和d2因为内存不一样所以是false。
大家可以看到,d类中什么也没有,但是可以用equals方法,那么这个方法哪来的呢,就是继承的他的父亲,Object这个类的。

如果类的对象不一样的话,可以用equals比较吗?

package duotai;
class d{}
class c{}
public class object_d {public static void main(String[] args) {d d1=new d();c c1=new c();System.out.print(d1.equals(c1));}
}
输出:false
因为equals是c和d类的爹Object的方法所以,Object可以随便比较儿子啊。

如果自定义类中有和父类相同的功能咱们没必要自己定义,继承父类的功能即可,建立自己特有的内容就好,这就是覆盖。
气死我了,上代码(Object类中自带equals方法):

package duotai;
class d{private int num;d(int num){this.num=num;}public boolean equals(Object obj) {d d1=(d)obj;//如果没有下转,就会报错,Object里并没有定义num变量。return this.num==d1.num;}
}
public class object {public static void main(String[] args) {d d2=new d(2);d d3=new d(2);System.out.print(d2.equals(d3));}
}
输出是:true

那么都是继承的父类equals可以跨类比较吗?

package duotai;
class d{private int num;d(int num){this.num=num;}public boolean equals(Object obj) {d d1=(d)obj;//如果没有下转,就会报错,Object里并没有定义num变量。return this.num==d1.num;}
}
class e{private int num;e(int num){this.num=num;}
}
public class object {public static void main(String[] args) {d d2=new d(2);e e2=new e(2);System.out.print(d2.equals(e2));}
}
这样是不行的,因为equals重写的里面,咱们是把Object转成了d类,那么问题来了,e类能转成d类吗?答案是不行,因为儿子凭什么转儿子,大家都一样都是儿子。

一天一个学废小技巧:
咱们看看Object的一些函数
首先咱们直接试试类的实体用toString()函数和hashCode()的效果

package duotai;
class d{private int num;d(int num){this.num=num;}
}
class e{private int num;e(int num){this.num=num;}
}
public class object_b {public static void main(String[] args) {d d2=new d(2);System.out.println(Integer.toHexString(d2.hashCode()));System.out.print(d2.toString());}
}
输出是:52cc8049
duotai.d@52cc8049这
是类的哈希值,这是内存的经典数据结构啦。

是不是所有的对象都具备哈希值?答案是肯定的
咱们再继续看getClass功能

package duotai;
class d{private int num;d(int num){this.num=num;}public void a() {System.out.print("lala");}
}public class object {public static void main(String[] args) {d d2=new d(2);Class c=d2.getClass();//类文件对象System.out.println(c.getName());}
}
得到的是:duotai.d,d2对应的类名,当然Class类中有很多种方法。

不知道大家发现了没有,Object类的toString()作用就是c.getName()+Integer.toHexString(d2.hashCode())的结果。

每日一练:

自己写一个类重写Object父类的toString()方法,改成输出你的名字+类的名字。

Java学习(二)Object相关推荐

  1. Java学习(二)---SE阶段回顾

    1.线程 线程创建 1.继承Thread类实现多线程run()为线程类的核心方法,相当于主线程的main方法,是每个线程的入口 2.覆写Runnable()接口实现多线程,而后同样覆写run().推荐 ...

  2. Java学习二:Javac Java的学习(原创)

    安装完了JDK,就可以编译.执行简答的Java程序了, 一.Javac  ,Java 路径名和包名的关系: 在D盘下,建文件夹Test,在Test里创建文件Java1.java(类名要与文件名一致) ...

  3. java学习二---对象和内存管理

    1.实例变量和类变量的内存分配 类变量 :使用static修饰的成员变量是类变量,属于该类本身 实例变量:没有使用static修饰的成员变量是实例变量,属于该类的实例 由于同一个JVM内每个类只对应一 ...

  4. Java学习----二维数组排序

    课堂代码实验 问题: (对二维数组排序)编写一个方法,使用下面方法对二维数组排序: public static void sort(int m[ ][ ]) 这个方法实现先按行排列后在按列排序. 例如 ...

  5. java学习二 数据类型自动提升 0x开头的数据是 16进制且是int型

    变量只能定义一次,不能定义两次, 变量的作用域:当前的大括号与子括号才有效 变量的作用:存储值,取值 整型:向上自动升级,向下强制降级 char,byte,shot参与运算时候自动提升为int型 因为 ...

  6. Java学习笔记二:数据类型

    Java学习笔记二:数据类型 1. 整型:没有小数部分,允许为负数,Java整型分4种:int short long byte 1.1 Int最为常用,一个Int类型变量在内存中占用4个字节,取值范围 ...

  7. Java学习笔记(二)

    1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Runtime Enviro ...

  8. java学习记录十五:集合二Collections、Set、Map

    java学习记录十五:集合二 一.Collections工具类 一.解释 二.常用方法 1.打乱集合顺序 2.按照默认规则排序 3.按指定规则排序 4.批量添加元素 二.可变参数 一.解释 二.写法 ...

  9. Java学习笔记-Day64 Spring 框架(二)

    Java学习笔记-Day64 Spring 框架(二) 一.控制反转IOC和依赖注入DI 1.控制反转IOC 2.依赖注入DI 3.Spring IOC容器 3.1.简介 3.2.实现容器 3.2.获 ...

最新文章

  1. 银监会警示担保圈贷款风险 联保贷款变异 防多米诺效应
  2. Python组合数据类型之字典类型
  3. RetinaFace笔记
  4. WinRAR最新版V3.93 破解方法
  5. 03-CoreData原理
  6. Android开发之原型图浏览器打开可点击跳转之Google插件之Axure(实际上大部分浏览器都可以安装这个插件)
  7. 周末想找个地方敲代码_观看我们的代码游戏,全周末直播
  8. 前端之使用 POST 提交数据并跳转
  9. 几个重要库函数的实现
  10. api es7 删除所有数据_【Elasticsearch7.0】文档接口之查询delete接口
  11. 深度学习自学(八):人脸识别主要场景与算法实现
  12. spring注入bean的三种方法
  13. pyqt qdialog 默认按钮_QT编程的QDialog对话框右上角的问号按钮如何取消呢
  14. linux journalctl使用详解
  15. linux kylin 终端字体,安装Nerd Fonts字体
  16. 跨语言词嵌入模型调研报告
  17. 乐高魔方机器人编程及图纸_LEGO 机器人魔方还原基本方法与过程
  18. 狼的处世十大哲理(想养狼的人必应)
  19. java url参数转map_url参数和map之间的转换
  20. OPNET中业务设置——学习笔记

热门文章

  1. 真人拳皇项目第七次Scrum总结——史经浩
  2. 由先序+后序遍历确定序列是否唯一并输出一个中序序列
  3. python : 自定义可迭代类,__iter__ ,__next__的作用
  4. Repository HDU - 2846 (trie)
  5. [Java反射基础四]通过反射了解集合泛型的本质
  6. zstack 搭建部署
  7. [.Net]轻量ORM——Dapper
  8. 针对piix4_smbus ****host smbus controller not enabled的解决方法
  9. Android自定义GridView显示一行,并且可以左右滑动
  10. NNIE模型转换环境搭建