Java中==就是用来比较值是否相等,equals()是父类Object提供的一个方法equals(Object obj),在Java API文档中提到:

  • The equals method for class Object implements the most discriminating possible equivalence relation on objects; that is, for any non-null reference values x and y, this method returns true if and only if x and y refer to the same object (x == y has the value true).

即如果不在自己的类重新实现的话作用等于==。

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 is true if and only if the argument is not null and is a String 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()和==的区别相关推荐

  1. JAVA 中equals()与==的区别

    原文地址:http://www.chineselinuxuniversity.net/articles/29594.shtml 值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存 ...

  2. 关于java中equals与==的区别的小实验

    java中equals与==经常容易混淆,简单一点说就是equals比较的是值是否相等,是一种方法,==比较的两个对象在JVM中的地址,是一种操作符. 做了几个小实验比较结果. 实验一: String ...

  3. 捉虫记 C++转java Java中equals和==的区别

    java中的数据类型,可分为两类:  1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolean    他们之间的比较,应用双等号( ...

  4. java 中equals和==的区别

    java9举例代码: 1 String str1 = "abc"; 2 String str2 = "abc"; 3 String str3 = new Str ...

  5. java中equals和 == 的区别

    摘自:https://blog.csdn.net/weixin_37690143/article/details/79767761 1.功能不同 "=="是判断两个变量或实例是不是 ...

  6. Java中 equals和==的区别?

    针对两种数据类型而言: 对于基本数据类型:==比较它们的值是否相等,而equals不能比较基本数据类型! 对与引用数据类型:equals和==都是比较引用变量是否引用到堆上的同一对象. 注意:以上是针 ...

  7. Java中 equals() 和 == 的区别

    1)对于==,如果作用于基本数据类型的变量,则直接比较其存储的 "值"是否相等: 如果作用于引用类型的变量,则比较的是所指向的对象的地址 2)对于equals方法,注意:equal ...

  8. java基础——equals及==的区别

    == ①数值比较[必须为整数,小数因为精度问题不能通过这个比较,只能依靠d1-d2<0.0000000001这样的比较两者的不同],值相等就行. ②引用比较,引用的对象有父子关系或者是同一类的才 ...

  9. java基础——“”equals“”与 “”==“” 的区别

    通过例子来说明更好点 Object obj  =   new Object(); Object objs = new Object(); 如果是比较obj  与 objs   是否指向同一个对象可以使 ...

最新文章

  1. 巧用CSS的 Mask 滤镜
  2. 李宏毅线性代数笔记3:行列式det
  3. Axure8.0深入一点(篇)
  4. 《剑指offer》-- 从上往下打印二叉树、二叉搜素树的后序遍历、二叉树中和为某一值的路径、二叉树与双向链表
  5. TypeScript—语法简介
  6. 记一次CentOS Install Docker 报错
  7. CM: Create BAdI implementation for Webservice enabled word document
  8. Ubuntu 中设置源的几种方法
  9. Spring Cloud Zuul的fallback优化
  10. js 控制鼠标_JS逆向 | 面向小白之eval混淆
  11. 电脑摄像头未能创建连接服务器,Win7摄像头提示"未能创建视频预览"的原因及解决方法...
  12. php 实现错字检查,PHP每日一练:编写写字符串检查函数
  13. 游戏资源提取常用工具索引
  14. 逻辑回归算法原理及python实现
  15. 黑客穷追不舍攻击“谷姐” [转]
  16. 圆面积公式积分法推导
  17. QT的下载与安装(QT5.9.1)
  18. win7 ie8升级到ie9后教你如果如何还原ie8
  19. 「雷军万字总结」小米十周年公开演讲全文
  20. pytho中的json序列化与反序列化操作

热门文章

  1. 华为USG6550 MIB CPU MEM
  2. 和我一起读Java8 LinkedList源码
  3. 【uC/OS-II】笔记1----入门
  4. django之Form表单
  5. 深入理解Android(三):Xposed详解
  6. Android JNI使用方法
  7. asterisk概述和代码分析
  8. 云计算之IaaS 中间件
  9. 扩展Editplus为Java IDE
  10. useMemo与useCallback