A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

真心求教:)

5 个回复

倒序浏览
对于两种对象间的比较,使用”==“运算符与equals()方法,”==”操作符用于比较两个变量的值是否相等,即比较对象所占内存是否相等,equals()方法用于比较两个对象的内容是否一致。想要弄清楚它们之间的区别就要先弄清楚对象在内存中的存放情况,以及对内存及栈内存之间的关系。
回复 使用道具 举报
相等性的比较(==)
1:对于原生类型来说,比较的是左右两边的值是否相等。
2:对于引用类型来说,比较左右两边的引用是否指向同一个对象,或者说左右两边的引用地址是否相同。
equal()方法,该方法定义在Object类中,因此java中的每个类都具有该方法,对于Object类的equals()方法来说,它是判断调用equals()方法的引用于传递进来的引用是否一致,即这两个引用是否指向同一个对象,对于Object类来说等同于
==。
对于String类的equals()方法来说,它是判断当前字符串于传进来的字符串的内容是否一致,不要使用==。
回复 使用道具 举报
1在原生数据类型中,只可用== 来表示两个数是否相等,不可以用equals方法比较。
2。在包装类型中,也即我们平时定义的类,默认的继承了 Object类,
     equals方法  指示其他某个对象是否与此对象“相等”。
equals 方法在非空对象引用上实现相等关系:
  • 自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true。
  • 对称性:对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true。
  • 传递性:对于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 应返回 true。
  • 一致性:对于任何非空引用值 x 和 y,多次调用 x.equals(y) 始终返回 true 或始终返回 false,前提是对象上 equals 比较中所用的信息没有被修改。
  • 对于任何非空引用值 x,x.equals(null) 都应返回 false。
Object 类的 equals 方法实现对象上差别可能性最大的相等关系;即,对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true(x == y 具有值 true)。 注意:当此方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。      
而== 表示的是两个对象是否是同一个对象。
回复 使用道具 举报
A:==
可以用于比较基本数据类型,比较的就是基本数据类型的值是否相等。
可以用于比较引用数据类型,比较的是对象的地址值是否相等。
B:equals
equals只能用于比较引用数据类型的。
Object提供的equals是用于比较对象地址值是否相同。
自定义类中,如果重写了equals方法,那么就是按照你自己的需求来比较的。

String s1 = new String("abc");
Strign s2 = new String("abc");

String s3 = "abc";
String s4 = "abc";

sop(s1==s2);  //false
sop(s1==s3);  //false
sop(s3==s4);  //true

System.out.println(s1.equals(s2));// true
System.out.println(s1 == s2);// false


System.out.println(s1.equals(s3));// true
System.out.println(s1 == s3);// false


System.out.println(s2.equals(s4));// true
System.out.println(s2 == s4);
回复 使用道具 举报
-------------------------以下是论坛内容------------------------

----------
地址:http://bbs.itheima.com/forum.php?

mod=viewthread&tid=17835&extra=page%3D1&page=1

java数据类型图:
                          ┏数值型━┳━整数型:byte short int

long
        ┏基本数据类型━━┫        ┗━浮点型:float double
        ┃                ┣字符型:char                        

                 
数据类型╋                ┗布尔型:boolean              
        ┃                ┏类(class)
        ┗引用数据类型━━╋接口(interface)
                          ┗数组(array)

java的数据类型分基本数据类型(原始数据类型)和引用数据类型;
1.基本八大类,图中可以很清楚的看到;这种类型的数据变量在声明之后

java就会立刻分配给他内存空间。如:short a;  java会在可使用的内存

空间寻找一个占两个字节的块给a变量;
2.引用数据类型就那三种,类似C/C++的指针,它以特殊的方式指向对象

实体(具体的值),这类变量声明时不会分配内存,只是存储了一个内存地

址,想具体知道看看数据结构就好了。

通俗讲,一、上图记住很够用;二、说内存、谈地址基本都是说引用而非

基本;三、你可以把内存地址理解是你学号,而对象实体就是你,每次找

你通过学号找,这就是引用;

这个知识点的应用:
1.“==”作用在引用数据类型间,判断内存地址是否相等,想判断内容实

体用equals;
2、基本传值传参传的是副本,修改后原值不变;引用传值传参穿的是地

址,修改后原值改变。
--------------------以上是论坛内容-----------------------------
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马