5.Object类

来源:互联网 发布:淘宝直播视频审核范本 编辑:程序博客网 时间:2024/06/03 23:38
1.关于Object类 中的tostring方法
    SUN在Object类中设计toString方法的目的:返回Java对象的字符串表示形式
    在现实开发过程中,Object里边的toString方法已经不够用

    因为Object的toString方法实现的结果不满意

public class test{public static void main(String[] args){//创建一个Object类型的对象Object o1 = new Object();String ostr = o1.toString();System.out.println(ostr);//java.lang.Object@1db9742Person p1 = new Person("gyc", 20);String pstr = p1.toString();System.out.println(pstr);//name=gycage=20Person p2 = new Person("zpp", 21);System.out.println(p2);//name=zppage=21    //println方法后括号中如果是一个引用类型,会默认调用引用类型的toString方法}}class Person{String name;int age; Person(String name, int age){this.name = name;this.age = age;}//重写toString方法,根据项目的需求而定 public String toString(){  return "name="+name+"age="+age;}}

2.关于Object类 中的equals方法
通过查源代码:public boolean equals(Object obj) {
        return (this == obj);
        }
this:o1  obj:o2   两个引用的内存地址不同,返回值为false

设计目的:判断两个对象是否一样

public class test{public static void main(String[] args){//创建一个Object类型的对象Object o1 = new Object();Object o2 = new Object();boolean b1 = o1.equals(o2);System.out.println(b1);//falseStar s1 = new Star(100, "gyc");Star s2 = new Star(100, "gyc");System.out.println(s1.equals(s2));//第一次false,重写后true}}class Star{int id;String name;public Star(int id, String name){this.id = id;this.name = name;}//Object中的equals方法中比较的是内存地址,在现实业务逻辑中,不应该比较内存地址,应该比较内容//所以Object中的equals方法也要重写//如果身份证号和名字一致,则为truepublic boolean equals(Object obj){if (this == obj)return true;if(obj instanceof Star){Star s = (Star)obj;if (s.id == id && s.name.equals(name)){return true;}}return false;}}


3.关于Object类 中的finallize方法
finalize方法什么时候调用?
1.finalize方法每个对象都有
2.finalize方法不需要程序员去调用,由系统自动调用
3.Java对象如果没有更多的引用指向它,则该Java对象成为垃圾数据,等待垃圾回收器的回收,垃圾回收期在回收这个Java对象之前会自动调用该对象的finalize方法

public class test{public static void main(String[] args){Person p1 = new Person();p1 = null;//没有引用再指向它,等待回收//程序员只能建议垃圾回收器回收垃圾System.gc();}}class Person{//重写object中的finalize方法   public void finalize() throws Throwable {    System.out.println(this + "马上就要被回收了");   }}

4.关于Object类 中的hashCode方法

public class test{public static void main(String[] args){//hashCode方法返回的是该对象的哈希码值//Java对象的内存地址经过哈希算法得出的int类型的数值test t = new test();System.out.println(t.hashCode());}//31168322}


原创粉丝点击