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

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

       Object
类是所有类的父类,如果一个类没有明确的继承自另外一个类,则肯定继承Object
类。
class Demo{}
等价于以下的代码:
       
class Demo extends Object{}
       
那么既然Object
类是所有类的父类,那么就意味着,所有类的对象都可以使用Object
接收。
       
那么在开发中,如果要想编写一个完整的类,应该最少覆写Object
类中的以下几个方法:
              
· 
toString
public Sting toString()
,对象打印的时候默认调用
              
· 
equals
public boolean equals(Object obj)
,对象比较
              
· 
hashCode
public int hashCode()
1
 toString()
方法是在对象打印的时候默认调用的
class Person{
};
public class Demo13{
         public static void main(String artgs[]){
                   Person p = new Person() ;
                   System.out.println(p) ;
         }
};
以上程序打印的结果为:
Person@757aef
       
如果在以上打印的时候把打印语句编写为:“System.out.println(p.toString()) ;
”,则效果与之前是一样的,那就证明,在打印对象的时候实际上调用toString()
方法,是默认调用的。此方法为Object
       
如果现在在Person
类中覆写了toString()
方法:
class Person{
         public String toString(){
                   return "HELLO WORLD!!!" ;
         }
};
public class Demo13{
         public static void main(String artgs[]){
                   Person p = new Person() ;
                   System.out.println(p) ;
         }
};
       
则打印结果为:
HELLO WORLD!!!
       
实际上可以在toString()
中编写更多的输出内容,如:以下代码:
class Person{
         private String name ;
         private int age ;
         public Person(String name,int age){
                   this.name = name ;
                   this.age = age ;
         }
         public String toString(){
                   return "
姓名:
"+this.name+"
,年龄:
"+this.age ;
         }
};
public class Demo13{
         public static void main(String artgs[]){
                   Person p = new Person("
张三
",30) ;
                   System.out.println(p) ;
         }
};
2
  equals
:对象比较
       
是对象比较的方法,String
Object
的子类,所以Strin
本身已经根据自己的情况覆写好了equals
方法了。
       
之前讲解过?如何区分两个对象是否一样?实际上这样的方法,应该写在equals
之中。
class Person{
         private String name ;
         private int age ;
         public Person(String name,int age){
                   this.name = name ;
                   this.age = age ;
         }
         public boolean equals(Object obj){
                   if(this==obj){
                            return true ;
                   }
                   if(!(obj instanceof Person)){
                            return false ;
                   }
                   Person p = (Person)obj ;
                   if(this.name.equals(p.name)&&this.age==p.age){
                            return true ;
                   }else{
                            return false ;
                   }
         }
         public String toString(){
                   return "
姓名:
"+this.name+"
,年龄:
"+this.age ;
         }
};
public class Demo14{
         public static void main(String artgs[]){
                   Person p1 = new Person("
张三
",30) ;
                   Person p2 = new Person("
张三
",30) ;
                   System.out.println(p1.equals(p2)) ;
         }
};
本文转自 李兴华 51CTO博客,原文链接:http://blog.51cto.com/lixinghua/96926,如需转载请自行联系原作者
你可能感兴趣的文章
React 生命周期
查看>>
干货:分布式系统学习笔记
查看>>
“我想要”的疑惑
查看>>
android位运算讲解与实战
查看>>
180道Java技术面试题:阿里11面试+网易+百度+美团!
查看>>
Android简易柱状图和曲线图表实现
查看>>
一款基于Handler的Android定时器与倒计时器
查看>>
第八章:使用拦截器记录你的SpringBoot的请求日志
查看>>
演讲实录|马晓宇:When TiDB Meets Spark
查看>>
日推笔记
查看>>
JNI引用
查看>>
(三分钟系列)详解Redis字符串内部结构
查看>>
数据结构:串
查看>>
webpack配置文件中属性的位置和数据结构
查看>>
以太坊:Dapp及相关开发工具介绍
查看>>
Android开发中常用的命令总结(不定时更新)
查看>>
面试题解:输入一个数A,找到大于A的一个最小数B,且B中不存在连续相等的两个数字...
查看>>
看ThreadPoolExecutor源码前的FLAG
查看>>
iOS动手做一个直播(原理篇)
查看>>
Node.js 中间件模式
查看>>