Java的equals()和==的区别
Java中==就是用来比较值是否相等,equals()是父类Object提供的一个方法equals(Object obj),在Java API文档中提到:
The
equals
method for classObject
implements the most discriminating possible equivalence relation on objects; that is, for any non-null reference valuesx
andy
, this method returnstrue
if and only ifx
andy
refer to the same object (x == y
has the valuetrue
).
即如果不在自己的类重新实现的话作用等于==。
Java的数据类型分为引用型和基本类型
基本类型有4类8种:
浮点型:float(4 byte), double(8 byte)
整型:byte(1 byte), short(2 byte), int(4 byte) , long(8 byte)
字符型: char(2 byte)
布尔型: boolean(JVM规范没有明确规定其所占的空间大小,仅规定其只能够取字面值"true"和"false")
在Java中存放的就是具体值,(其值存放在data segment),用==比较的就是data segment中的值
int a = 1; int b = 1;
a==b; 返回true //基本类型不能用equals()比较
引用类型有3中:
自定义类,数组,接口
当声明引用类型时,如 Animal a = new Animal("cat"); Animal b = new Animal("cat");
其中a,b存在栈上,new出的两个对象存在堆上, 此时a==b为false, 因为栈上的a,b存的是new出对象的地址,通过此地址可以找到对象,a,b的值是不同的,同样如果Animal类没有重写equals()方法,返回值和==一样为false
特殊的是String类自动为我们重写了equals()方法,Java API中写到
public boolean equals(Object anObject)
Compares this string to the specified object. The result istrue
if and only if the argument is notnull
and is aString
object that represents the same sequence of characters as this object.
它比较的是String的具体内容,即字符串的值
String a = new String("hello");
String b = new String("hello");
a==b;//false
a.equals(b);//true
转载于:https://www.cnblogs.com/atongmumu/p/6431254.html
Java的equals()和==的区别相关推荐
- JAVA 中equals()与==的区别
原文地址:http://www.chineselinuxuniversity.net/articles/29594.shtml 值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存 ...
- 关于java中equals与==的区别的小实验
java中equals与==经常容易混淆,简单一点说就是equals比较的是值是否相等,是一种方法,==比较的两个对象在JVM中的地址,是一种操作符. 做了几个小实验比较结果. 实验一: String ...
- 捉虫记 C++转java Java中equals和==的区别
java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolean 他们之间的比较,应用双等号( ...
- java 中equals和==的区别
java9举例代码: 1 String str1 = "abc"; 2 String str2 = "abc"; 3 String str3 = new Str ...
- java中equals和 == 的区别
摘自:https://blog.csdn.net/weixin_37690143/article/details/79767761 1.功能不同 "=="是判断两个变量或实例是不是 ...
- Java中 equals和==的区别?
针对两种数据类型而言: 对于基本数据类型:==比较它们的值是否相等,而equals不能比较基本数据类型! 对与引用数据类型:equals和==都是比较引用变量是否引用到堆上的同一对象. 注意:以上是针 ...
- Java中 equals() 和 == 的区别
1)对于==,如果作用于基本数据类型的变量,则直接比较其存储的 "值"是否相等: 如果作用于引用类型的变量,则比较的是所指向的对象的地址 2)对于equals方法,注意:equal ...
- java基础——equals及==的区别
== ①数值比较[必须为整数,小数因为精度问题不能通过这个比较,只能依靠d1-d2<0.0000000001这样的比较两者的不同],值相等就行. ②引用比较,引用的对象有父子关系或者是同一类的才 ...
- java基础——“”equals“”与 “”==“” 的区别
通过例子来说明更好点 Object obj = new Object(); Object objs = new Object(); 如果是比较obj 与 objs 是否指向同一个对象可以使 ...
最新文章
- 巧用CSS的 Mask 滤镜
- 李宏毅线性代数笔记3:行列式det
- Axure8.0深入一点(篇)
- 《剑指offer》-- 从上往下打印二叉树、二叉搜素树的后序遍历、二叉树中和为某一值的路径、二叉树与双向链表
- TypeScript—语法简介
- 记一次CentOS Install Docker 报错
- CM: Create BAdI implementation for Webservice enabled word document
- Ubuntu 中设置源的几种方法
- Spring Cloud Zuul的fallback优化
- js 控制鼠标_JS逆向 | 面向小白之eval混淆
- 电脑摄像头未能创建连接服务器,Win7摄像头提示"未能创建视频预览"的原因及解决方法...
- php 实现错字检查,PHP每日一练:编写写字符串检查函数
- 游戏资源提取常用工具索引
- 逻辑回归算法原理及python实现
- 黑客穷追不舍攻击“谷姐” [转]
- 圆面积公式积分法推导
- QT的下载与安装(QT5.9.1)
- win7 ie8升级到ie9后教你如果如何还原ie8
- 「雷军万字总结」小米十周年公开演讲全文
- pytho中的json序列化与反序列化操作