码迷,mamicode.com
首页 > 其他好文 > 详细

Object对象 equals()方法

时间:2018-07-28 13:44:20      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:tostring   class   直接   ring   ret   rgs   图片   title   string类   

 

equals方法,用于比较两个对象是否相同,它其实就是使用两个对象的内存地址在比较。

Object类中的equals方法内部使用的就是==比较运算符

技术分享图片

 1 public class Person {
 2     private String name;
 3     private int age;
 4     Person(){
 5         
 6     }
 7     Person(String name,int age){
 8         this.name=name;
 9         this.age=age;
10     }
11 
12     public boolean equals(Object obj) {//Object obj=new Person();
13         //调用子类都有的成员,需要向下转型
14         if(obj==null){
15             return false;
16         }
17         if(obj==this){
18             return true;
19         }
20         if(obj instanceof Person ){
21             Person p=(Person)obj;
22             return this.age==p.age;
23         }
24         return false;
25     }

toString方法

技术分享图片

 1 public class Demo01 {
 2 
 3     public static void main(String[] args) {
 4         Person p1=new Person("熊大",2);
 5         Person p2=new Person("熊二",2);
 6         ArrayList<String> list=new ArrayList<String>();
 7         System.out.println(p1==p2);
 8         System.out.println(p1.equals(list));
 9         System.out.println(p1);//默认打印tostring()   子类方法重写后  就变成子类重写方法
10         System.out.println(p2);
11     }

 

 

 

 

 

String类

创建的相同String数组地址是一样的,在运行str时已经存在abc字符串数组,

所以运行str2的时候会先去找这个数组存不存在,如果已经有了则他的地址直接拿过来用

所以str与str2的地址与内容都是一样的

1 public static void main(String[] args) {
2         String str="abc";
3         //str="efg";
4         //String str1=new String("abc");
5         String str2="abc";
6         System.out.println(str==str2);
7         System.out.println(str.equals(str2));
8     }

 

 

 

图解

技术分享图片

当运行str的时候,在堆里分配一个数组地址,分为三块,这个地址给到str,

在运行str1的时候,也分配一个地址,因为内容一样 所以str的地址直接给到str1,

所以str与str1比较的时候,他们地址不一样而内容是一样的

技术分享图片
1 public static void main(String[] args) {
2         String str="abc";
3         //str="efg";
4         String str1=new String("abc");
5         //String str2="abc";
6         System.out.println(str==str1);
7         System.out.println(str.equals(str1));
8     }
技术分享图片

图解:

技术分享图片

插一段string的构造方法

1 public static void main(String[] args) {
2         //字节数组走的是GBK编码表(正数走ascII表,负数就是汉字(两个字节一个汉字))
3         byte[] bytes={97,98,99,100};
4         String str=new String(bytes);
5         String str2=new String(bytes,1,2);
6         System.out.println(str2);
7         System.out.println(str);//abcd
8     }

详细ascII码表:

48—0,65—A,97—a

技术分享图片

 

Object对象 equals()方法

标签:tostring   class   直接   ring   ret   rgs   图片   title   string类   

原文地址:https://www.cnblogs.com/a709898670/p/9381425.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!