Java 面向对象 之 Object 类

Wesley13
• 阅读 687

http://www.verejava.com/?id=16992832835152

/**
    知识点: Object 类

    注意:
        1. Object 是所有类的根类, 也就是说所有类默认都继承Object 只是省略没有写
        2. 当 println()输出一个对象的时候 自动调用了 Object的 toString() 方法
        3. Object toString() 方法返回的是 : 类名+@+16进制的哈希码hashCode地址
            哈希码 代表对象的内存地址,所以如果比较两个对象的引用相等==必须 哈希码相等
        4. Object equals(Object obj) 方法比较的也是引用内部是以==实现的
        5. String 对象的equals()方法怎么是比较内容了?
        6. 如果要equals()比较两个对象的内容相等我们需要复写equals 方法
        7. 当Object的子类复写了 toString() 方法, println()输出时调用子类复写的 toString() 方法
        8. 如果复写了equals()方法,为了保证对象相等哈希码hashcode必须相等的特性,
           我们也要复写hashCode()方法使保持对象的一致性
        9. Object 可以接收任意引用数据类型(类,数组,接口)

    回顾知识点:
        1. 如果一个类定义了带参数的构造方法, 当用不带参数的构造方法调用时,java
           虚拟机不会自动生成默认的构造方法,必须得手动显示定义不带参数的默认构造方法。
*/
public class TestObject
{
    public static void main(String[] args)
    {
        //实例化一个 Student
        Object p=new Student("李明");
        Student p2=(Student)p;
        Student p3=new Student("张涛");
        Student p4=new Student("李明");
        System.out.println(p);
        System.out.println(p==p2);
        System.out.println(p3);
        System.out.println(p.equals(p3));
        System.out.println(p==p4);
        System.out.println(p.equals(p4));
        System.out.println(p);
        System.out.println(p4);

        Person p5=new Student("李明");
        System.out.println(p4.equals(p5));

        String[] p6=new String[1];
        p6[0]="李明";
        System.out.println(p4.equals(p6));
    }
}
interface Person
{
    /**
        什么人可以说话
    */
    public void say();
}
class Student extends Object implements Person
{
    private String name;

    public Student()
    {
    
    }

    public Student(String name)
    {
        this.name=name;
    }

    public String getName()
    {
        return this.name;
    }

    public void say()
    {
        System.out.println("学生会说英语");
    }
    

    public boolean equals(Object obj)
    {
        //如果地址都相等, 两个对象肯定相等
        if(this==obj)
        {
            return true;
        }
        //判断是否是 Student 对象实例
        if(obj instanceof Student)
        {
            //将obj向下转型成 Student
            Student p=(Student)obj;
            //如果内容相等返回true
            if(this.name.equals(p.getName()))
            {
                return true;
            }
        }
        return false;
    }

    public int hashCode()
    {
        return this.name.hashCode();
    }
    
    public String toString()
    {
        return this.name;
    }
    
}

http://www.verejava.com/?id=16992832835152

点赞
收藏
评论区
推荐文章
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Stella981 Stella981
3年前
Guava库学习:Guava中Objects实用工具类的学习
    链接地址:http://www.xx566.com/detail/128.html(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.xx566.com%2Fdetail%2F128.html)  Java中的Object类是所有Java类的超类(也就是祖先),所
Wesley13 Wesley13
3年前
4. Nginx模块
Nginx官方模块1.ngx\_http\_stub\_status\_modulehttp://nginx.org/en/docs/http/ngx\_http\_stub\_status\_module.html。(https://www.oschina.net/action/GoToLink?urlhttp%3A%2
Wesley13 Wesley13
3年前
P2P技术揭秘.P2P网络技术原理与典型系统开发
Modular.Java(2009.06)\.Craig.Walls.文字版.pdf:http://www.t00y.com/file/59501950(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.t00y.com%2Ffile%2F59501950)\More.E
Wesley13 Wesley13
3年前
Uber基于RNN的极端事件预测,解决交通问题
时间 2017061212:00:15  亿欧网(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.tuicool.com%2Fsites%2FAJj2Un)_原文_  http://www.iyiou.com/p/47628(https://www.oschina.n
Stella981 Stella981
3年前
Cubieboard 3(cubietruck) 安装 java 环境
Cubieboard3 刷机过程 请看 http://name5566.com/4398.html(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fname5566.com%2F4398.html)安装java环境下载 armjdkh
Easter79 Easter79
3年前
Swift项目兼容Objective
!456.jpg(http://static.oschina.net/uploads/img/201509/13172704_1KcG.jpg"1433497731426906.jpg")本文是投稿文章,作者:一叶(博客(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2F00red
Wesley13 Wesley13
3年前
Java 面向对象 之 方法中内部类
<ahref"http://www.verejava.com/?id16992857876159"http://www.verejava.com/?id16992857876159(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.verejava.com%2F%3Fid%
Wesley13 Wesley13
3年前
Java 正则表达式 之 分割
<ahref"http://www.verejava.com/?id16994950342031"http://www.verejava.com/?id16994950342031(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.verejava.com%2F%3Fid%
Wesley13 Wesley13
3年前
Java多线程同步器
Java多线程同步器博客分类:java转自:http://www.talentdigger.cn/home/space.php?uid2189&dothread&id4129(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.talentdigger.cn%2Fho