Object类
java.lang包:使用了lang包下的类,可以不引包
java.lang.Object类:所有类的父类(直接继承或间接继承)
Java中所有的类都直接或间接地继承Object类? 答案:错误 Object类本身
题目本身不严谨,给出严谨的答案, 后面用文字补充说明
Java中类型的体系
Java中一共有多少种数据类型?
答案:2种
基本数据类型 8种
引用数据类型 Object 包括数组 int[] a
Object类中的主要方法 (在所有的类中都会被继承)
(1)equals(Object o):指示其他某个对象o是否与当前对象“相等”。(重要)
默认情况下: equals相当于 == 表示引用数据类型的地址是相同的
特殊情况下: String类型中equals方法比较的是字符串内容是否一致
obj instanceof Object obj是一个变量 Object是一个类型
判断obj是否是Object这种类型 如果是:true 不是:false
面向对象中,继承体现现实世界中一般与特殊的关系
鸟 燕子
水果 苹果
Apple extends Fruit
Apple apple = new Apple();
apple instanceof Fruit -> true
虽然改写equals方法可以实现逻辑上的功能,但是个人建议不要轻易重写equals方法
(2)finalize():进行垃圾回收
内存泄露:
类似C++语言,使用对象后需要手工回收,回收不彻底就会产生内存泄露
Java虚拟机中,存在着一个低优先级的自动运行的垃圾回收线程,
每隔一段时间扫描内存中不使用的对象,调用对象的finalize方法进行回收
(3)getClass():返回Class的类型的运行时类 -- 与Java反射机制有关系
获取类名 对象.getClass().getName()
类.class.getName()
(4)hashCode(): 返回对象的哈希码值
hashCode方法一般与equals方法联合使用
重写equals方法通常会重写hashcode方法:为了提升equals方法的效率
对象a和对象b
a == b 它们的内存地址一致, 它们的哈希码值也一致
a != b 它们的内存地址不一致,但它们的哈希码值可能一致
a.equals(b)方法
先判断 a和b的哈希码值是否一致?
不一致 => a != b false
一致
再判断地址是否一致?
一致 => a == b true
不一致 => a != b false
(5)toString():将对象用字符串方式表示(重要)
System.out.println(a); 相当于调用了a的toString()方法
通过改写toString方法来改变输出内容
默认是:类名@内存地址
(6)wait,notify和notifyAll
这些方法与多线程有关
wait:线程等待
notify:线程唤醒
java.lang包:使用了lang包下的类,可以不引包
java.lang.Object类:所有类的父类(直接继承或间接继承)
Java中所有的类都直接或间接地继承Object类? 答案:错误 Object类本身
题目本身不严谨,给出严谨的答案, 后面用文字补充说明
Java中类型的体系
Java中一共有多少种数据类型?
答案:2种
基本数据类型 8种
引用数据类型 Object 包括数组 int[] a
Object类中的主要方法 (在所有的类中都会被继承)
(1)equals(Object o):指示其他某个对象o是否与当前对象“相等”。(重要)
默认情况下: equals相当于 == 表示引用数据类型的地址是相同的
特殊情况下: String类型中equals方法比较的是字符串内容是否一致
obj instanceof Object obj是一个变量 Object是一个类型
判断obj是否是Object这种类型 如果是:true 不是:false
面向对象中,继承体现现实世界中一般与特殊的关系
鸟 燕子
水果 苹果
Apple extends Fruit
Apple apple = new Apple();
apple instanceof Fruit -> true
虽然改写equals方法可以实现逻辑上的功能,但是个人建议不要轻易重写equals方法
(2)finalize():进行垃圾回收
内存泄露:
类似C++语言,使用对象后需要手工回收,回收不彻底就会产生内存泄露
Java虚拟机中,存在着一个低优先级的自动运行的垃圾回收线程,
每隔一段时间扫描内存中不使用的对象,调用对象的finalize方法进行回收
(3)getClass():返回Class的类型的运行时类 -- 与Java反射机制有关系
获取类名 对象.getClass().getName()
类.class.getName()
(4)hashCode(): 返回对象的哈希码值
hashCode方法一般与equals方法联合使用
重写equals方法通常会重写hashcode方法:为了提升equals方法的效率
对象a和对象b
a == b 它们的内存地址一致, 它们的哈希码值也一致
a != b 它们的内存地址不一致,但它们的哈希码值可能一致
a.equals(b)方法
先判断 a和b的哈希码值是否一致?
不一致 => a != b false
一致
再判断地址是否一致?
一致 => a == b true
不一致 => a != b false
(5)toString():将对象用字符串方式表示(重要)
System.out.println(a); 相当于调用了a的toString()方法
通过改写toString方法来改变输出内容
默认是:类名@内存地址
(6)wait,notify和notifyAll
这些方法与多线程有关
wait:线程等待
notify:线程唤醒