Object对象 equals()方法

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

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

时间: 2024-07-29 20:34:45

Object对象 equals()方法的相关文章

java基础:Object的equals方法

一:看第一个例子 输出结果: false false cat1 == cat2 很简单,他们不是同一对象,有不通的存储地址. 但是cat1.equals(cat2)为什么是false呢.因为cat是对象,这里用的是父类的equals方法 而Object类equals方法的实现为: <strong><span style="font-size:18px;"> public boolean equals(Object obj) { return (this == o

关于重写对象equals方法的问题

1.==和equals的区别 a.基本数据类型使用  == 进行值的比较 b.引用类型使用 == 进行比较时,直接比较的是对象的存储地址,即两个引用是否指向了同一个对象. c.equals方法是基类Object中的方法,该方法如果在其他类中没有被重写,则比较的还是地址,即两个引用是否指向了同一个对象,和==是一样的(其实equals方法的默认实现就是==).该方法在一些实现类中已经被重新了,如 String和Integer等包装类,在这些类中用来比较值是否相等. 即:equals方法如果没有重写

Object对象详解(三)之hashCode与equals

从学习Java开始,就从各个师兄.各种书籍.各大网站听到.看到,重写equals方法必须重写hashCode方法.重写equals方法必须重写hashCode方法.重写equals方法必须重写hashCode方法. 那么为什么呢?今天就详细剖析一下equals和hashCode! equals方法是比较两个对象实例是否相等.Object中equals方法的描述为: public boolean equals(Object obj) { return (this == obj); } 也就是默认情

java的Object类中hashCode()和equals()方法-----转载

JAVA代码:    public static void main(String[] args)    {        Object obj1 = new Object();        Object obj2= new Object();        Object obj3 = obj2;        System.out.println("obj1==obj2 ?"+obj1.equals(obj2));        System.out.println("o

如何使用==操作符,Equals方法,ReferenceEquals方法,IEquatable接口比较2个对象

"世界上不会有两片完全相同的树叶",这句话适用于现实世界.而在软件世界中,这句话变成了"世界上必须有两片完全相同的树叶",否则,很多事情无以为继. 当比较2个对象是否相等时,通常情况下:==操作符用来比较值类型,比较的是值:实例方法Equals比较引用类型,比较的是对象的地址.静态方法Object.ReferenceEquals既可以比较引用类型也可以比较值类型,但比较的是对象的地址. 在实际项目中,当比较2个引用类型对象时,我们的需求变为:通过依次比较2个对象的所

Java Object类及其equals方法

基本概念: Object类位于java.lang包中,java.lang包包含着Java最基础和核心的类,在编译时会自动导入: Object类是所有Java类的祖先.每个类都使用 Object 作为超类.所有对象(包括数组)都实现这个类的方法.可以使用类型为Object的变量指向任意类型的对象 equals()方法:比较两个对象是否同一       如果两个对象具有相同的类型以及相同的属性值,则称这两个对象相等.如果两个引用对象指的是同一个对像,则称这两个变量同一.Object类中定义的equa

Object类及equals()方法

1 ==  对于基本数据类型,根据两端的值来判断是否相等,即使两端的数据类型不同,也可以返回true.引用数据类型,比较引用变量类型的地址是否相等 2 equals()是比较引用类型变量是否相等,也是比较地址值 3 ctrl+shift+t 查看源码 package lianxi2; public class TestEquals { public static void main(String []args){ Department d1 = new Department(); Departm

阮一峰老师的JavaScript标准参考教程:Object对象和Object方法

Object对象 1. 概述 1.1 生成方法 对象(object)是 JavaScript 语言的核心概念,也是最重要的数据类型. 什么是对象?简单说,对象就是一组“键值对”(key-value)的集合,是一种无序的复合数据集合. var obj = { foo: 'Hello', bar: 'World' }; 上面代码中,大括号就定义了一个对象,它被赋值给变量obj,所以变量obj就指向一个对象.该对象内部包含两个键值对(又称为两个“成员”),第一个键值对是foo: 'Hello',其中f

java equals 方法

package com.mydemo.controller; public class TestEquals { public static void main(String[] args) { Dog d1 = new Dog(1, 2, 3); Dog d2 = new Dog(1, 2, 3); // d1 永远不等于 d2,比较的是两个对象的引用 System.out.println(d1 == d2); // Object 的equals 方法默认比较两个对象的引用 System.ou