java高级_工具类 _Object类

来源:互联网 发布:淘宝帐户冻结了怎么办 编辑:程序博客网 时间:2024/06/04 23:18
  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:线程唤醒
0 0
原创粉丝点击