博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Object类
阅读量:6943 次
发布时间:2019-06-27

本文共 3131 字,大约阅读时间需要 10 分钟。

Java中所有类的顶级父类(超类),任何一个类都直接或间接的继承Object,也就是说任何一个类的对象都可以赋值给一个Object对象(向上造型).

clone()(用protect修饰)   创建并返回此对象的一个副本

package cn.tedu.object;public class ObjectDemo1 implements Cloneable {    int i;    public static void main(String[] args) throws Throwable {        ObjectDemo1 od1 = new ObjectDemo1();        od1.i = 10;        // 一个类所产生的对象要想被克隆,那么这个类必须实现Cloneable接口        // Cloneable接口中没有任何的方法和属性,仅仅用作一个标志        // 产生了一个新对象,而新对象的属性值和原对象一样        ObjectDemo1 od2 = (ObjectDemo1) od1.clone();        System.out.println(od2.i);                //调用哪个对象,只能在对应子类中用,p对象不在对应的Person类中,所以不能使用clone方法        // Person p = new Person();        // p.clone();    }}// class Person implements Cloneable {// }
View Code

finalize()   通知gc进行回收,不能直接调用gc,gc不一定启动

对象.finalize();或者System.gc();(该方法底层调用的是finalize方法)

getClass()   返回此Object的运行时类

Object o = "abc";//获取对象的实际类型System.out.println(o.getClass());

hashcode()   返回该对象的哈希码值

Object o = new Object();//哈希码是根据哈希散列算法计算出来的//哈希散列算法要求计算出来的值随机的散落在int的取值范围内//存储对象时以对象的哈希码作为基准System.out.println(o.hashCode());

toString()   返回该对象的字符串表示

System.out.println(o);System.out.println(o.toString());// 当直接打印对象的时候,实际上底层默认调用对象的toString方法public String toString() {        return getClass().getName() + "@" + Integer.toHexString(hashCode());}//二进制Bin八进制Oct十进制Dec十六进制Hex// 如果重写了这个toString,那么按照重写之后的形式来返回

equals()   比较俩对象是否相等

public boolean equals(Object obj) {        return (this == obj);}

重写equals()方法,比较包含具体属性的俩对象是否相等

package cn.jay.exer;public class Exer5 {    public static void main(String[] args) {        Student1 s=new Student1();        s.setName("xiao");        s.setAge(30);        s.setId("管理01");            Student1 s1=new Student1();        s1.setName("xiao");        s1.setAge(30);        s1.setId("管理01");        //System.out.println(s.getName());        //底层用==进行比较,==默认比较的是地址        System.out.println(s.equals(s1));    }}class Student1{    String name;    int age;    String id;        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;    }    public String getId() {        return id;    }    public void setId(String id) {        this.id = id;    }    @Override    public boolean equals(Object obj) {        //判断地址是否一致        if (this == obj)            return true;        //判断参数是否为空        if (obj == null)            return false;        //判断类型是否一致        if (getClass() != obj.getClass())            return false;        //将obj强转为Student1类型,保持类型一致,然后比较两个对象的属性值        Student1 s = (Student1) obj;        if (age != s.age)            return false;        //id是String类型,所以需要使用String中的equals比较        if (id == null) {            if (s.id != null)                return false;        } else if (!id.equals(s.id))            return false;        //name是String类型,所以需要使用String中的equals比较        if (name == null) {            if (s.name != null)                return false;        } else if (!name.equals(s.name))            return false;        return true;    }    }
View Code

 

转载于:https://www.cnblogs.com/lj-cn/p/9343524.html

你可能感兴趣的文章
Hexo-设置阅读全文
查看>>
实模式与保护模式
查看>>
分布式ID生成器解决方案
查看>>
ResolveUrl in external JavaScript file in asp.net project
查看>>
EL表达式JSON应用
查看>>
人民邮电出版社图灵公司征求《Windows Communication Foundation Unleashed》译者
查看>>
使用pidstat查看进程资源使用情况
查看>>
PatternsInJava文摘
查看>>
理解SVN关键词BASE,HEAD,COMMITTED,PREV
查看>>
AOP 实现的原理简析
查看>>
linux命令汇总1
查看>>
PHP 初学
查看>>
I.MX6 U-boot编译找不到用户目录
查看>>
date 修改系统时间
查看>>
python coroutine的学习跟总结[转]
查看>>
String 的扩展方法
查看>>
[zhuan]Simple Emacs Configuration
查看>>
Flex Builder 3 下载与注册
查看>>
【存储方式】SharedPreference
查看>>
[转载]wp7
查看>>