PoeticalJustice

导航

Object类

java.lang.Object

Class Object is the root of the class hierarchy. Every class has Object as a superclass. All objects, including arrays, implement the methods of this class. 

Object这个类是所有类的根基类(老祖宗)。是所有类的父类,所有的对象,包括数组对象,也实现了这个类的方法。

1     public static void main(String[] args) {
2         Object obj=new Object();
3     }

Ctrl+鼠标左键 ,点击Object ,进入源代码 .

了解几个常用的方法。

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

比较2个对象的地址,地址相同,返回true,否则,false。

1     public String toString() {
2     return getClass().getName() + "@" +     
3         Integer.toHexString(hashCode());
4     }

把一个对象转成字符串。

getClass().getName() 获取到类的名字(包含 包名)
+ "@" + Integer.toHexString(hashCode()); 把对象的哈希码,转成无符号的16进制的数字。
所以我们来用一哈,如下。
1     public static void main(String[] args) {
2         Object obj=new Object();
3         Object obj2=new Object();
4         System.out.println(obj.toString());
5         System.out.println(obj2.toString());    
6     }
7 }

控制台输出

java.lang.Object@55f33675
java.lang.Object@527c6768

显然地址不同

使用equals方法

        System.out.println(obj==obj2);
        System.out.println(obj.equals(obj2));

控制台输出

false
false

我们能不能重写这两个方法呢?答案是肯定的。

equals方法重写(等到容器,再更,牵扯到容器)

toString方法重写

因为object 是根基类,所以我们不写extends object,他也是继承的。

重写方法最好复制粘贴原来的方法名,手写容易失误,因为方法名里的单词(驼峰原则),中间大写的字母你小写他是不会报错的,默认是新的方法名。

我们创建一个类

1 public class Mobile {
2     public String toString(){
3         return "我是iphoneX,您的肾准备好了吗?";
4     }
5 }

在main方法里创建对象

1         Mobile m = new Mobile();
2         System.out.println(m.toString());

控制台输出

1 我是iphoneX,您的肾准备好了吗?

小贴士:如何看一个类有什么父类和子类呢?(类型层次结构)

1.F4

2.鼠标放类名上    +   Ctrl+t

3.鼠标右键 Open Type Hierarchy

 

posted on 2017-09-28 20:30  PoeticalJustice  阅读(144)  评论(0)    收藏  举报