[18/11/30] toString()方法 和 equals() 方法

一、 toString() 方法

          Object类中定义有public String toString()方法,其返回值是 String 类型  默认: return getClass().getName() + "@" + Integer.toHexString(hashCode());

          默认会返回“类名+@+16进制的哈希码”。在打印输出或者用字符串连接对象时,会自动调用该对象的toString()方法。

代码示例:

 1 //测试toString()方法,属于Object类  位于Java.lang包中 核心包
 2 
 3 class Person
 4 {
 5     String name;
 6     int age;
 7     public Person(String name,int age){ //构造方法
 8         this.name=name;
 9         this.age=age;
10 
11     }
12     public String toString(){  //重写toStirng 方法
13         return "名字:"+name+"  年龄:"+age;
14     }
15 }
16 public class  Test_1130_01 // 默认继承于 Object类
17 {
18 
19 
20     public static void main(String[] args) //主方法
21     {
22         Test_1130_01 to=new Test_1130_01(); //toString() 默认会返回“类名+@+16进制的hashcode”。
23         System.out.println(to);  //等价于 System.out.println( to.toString() ); 
24 
25         System.out.println("------------");
26         Person p=new Person("李白",18);
27         System.out.println(p);  //默认调用toString 会输出对象p的信息
28 
29     }
30 
31     public String toString() //重新toString()方法
32     {
33         return "测试Object对象"; //输出时调用重写后的方法,而不是默认方法  
34 
35     }
36 }

二、 equals() 方法

       Object类中定义有:public boolean equals(Object obj)方法,提供定义“对象内容相等”的逻辑。比如,我们在公安系统中认为id相同的人就是同一个人、学籍系统中认为学号相同的人就是同一个人。

        Object 的 equals 方法默认就是比较两个对象的hashcode,是同一个对象的引用时返回 true 否则返回 false。但是,我们可以根据我们自己的要求重写equals方法。

        x.equals (y) ,当x和y所引用的对象是同一类对象且属性内容相等时(并不一定是相同对象),返回 true 否则返回 false。

代码示例:

 1 //测试 equals方法
 2 class User
 3 {
 4     int id;
 5     String name;
 6     String pwd;
 7     public User(int id,String name,String pwd){ //构造方法
 8         this.id=id;
 9         this.name=name;
10         this.pwd=pwd;
11     }
12 
13     public boolean equals(Object obj){//重新equals()方法  只要id相等则认为相等
14         if(this==obj)
15             return true;
16         if(obj==null) //判断对象是否为空
17             return true;
18         if(getClass()!=obj.getClass()) //判断类型是否相等
19             return true;
20         User other=(User)obj; //强制转换成User类
21         if(id!=other.id)  //核心 判断id是否相等
22             return false;
23         return true;
24     }
25 }
26 
27 
28 public class Test_1130_02 
29 {
30     public static void main(String[] args) 
31     {
32         User u1=new User(1001,"李白","1234");
33         User u2=new User(1001,"李黑","1234");
34         System.out.println(u1==u2);//“==”代表比较双方是否相同。如果是基本类型则表示值相等,如果是引用类型则表示地址相等即是同一个对象。
35         System.out.println(u1.equals(u2));//equals 方法,重新后会输出true
36 
37     }
38 }

 

转载于:https://www.cnblogs.com/ID-qingxin/p/10046710.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值