java里equals和区别(java==和equals的区别)

2026-01-31 21:30:02 :0

java里equals和区别(java==和equals的区别)

其实java里equals和区别的问题并不复杂,但是又很多的朋友都不太了解java==和equals的区别,因此呢,今天小编就来为大家分享java里equals和区别的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

本文目录

java==和equals的区别

  1、java中equals和==的区别 值类型是存储在内存中的堆栈(简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。
  2、==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。
  3、equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。
  4、==比较的是2个对象的地址,而equals比较的是2个对象的内容,显然,当equals为true时,==不一定为true。

java中equals和==的区别是什么

方法/步骤
1
一、String中的equals和==
1、public class TestString { public static void main(String args) { String s1 = "Monday"; String s2 = "Monday"; if (s1 == s2) System.out.println("s1 == s2"); else System.out.println("s1 != s2"); }
}编译并运行程序,输出:s1 == s2说明:s1 与 s2 引用同一个 String 对象 -- "Monday"!
2
2.再稍微改动一下程序,会有更奇怪的发现:public class TestString { public static void main(String args) { String s1 = "Monday"; String s2 = new String("Monday"); if (s1 == s2) System.out.println("s1 == s2"); else System.out.println("s1 != s2"); if (s1.equals(s2)) System.out.println("s1 equals s2"); else System.out.println("s1 not equals s2"); }}我们将 s2 用 new 操作符创建程序输出:s1 != s2s1 equals s2说明:s1 s2分别引用了两个"Monday"String对象
3
3. 字符串缓冲池原来,程序在运行的时候会创建一个字符串缓冲池当使用 s2 = "Monday" 这样的表达是创建字符串的时候,程序首先会在这个String缓冲池中寻找相同值的对象,在第一个程序中,s1先被放到了池中,所以在s2被创建的时候,程序找到了具有相同值的 s1将 s2 引用 s1 所引用的对象"Monday"第二段程序中,使用了 new 操作符,他明白的告诉程序:"我要一个新的!不要旧的!"于是一个新的"Monday"Sting对象被创建在内存中。他们的值相同,但是位置不同,一个在池中游泳一个在岸边休息。哎呀,真是资源浪费,明明是一样的非要分开做什么呢?
4
4.再次更改程序:public class TestString { public static void main(String args) { String s1 = "Monday"; String s2 = new String("Monday"); s2 = s2.intern(); if (s1 == s2) System.out.println("s1 == s2"); else System.out.println("s1 != s2"); if (s1.equals(s2 www.gzlij.com)) System.out.println("s1 equals s2"); else System.out.println("s1 not equals s2"); }}这次加入:s2 = s2.intern();程序输出:s1 == s2s1 equals s2原来,(java.lang.String的intern()方法 "abc".intern()方法的返回值还是字符串"abc",表面上看起来好像这个方法没什么用处。但实际上,它做了个小动作: 检查字符串池里是否存在"abc"这么一个字符串,如果存在,就返回池里的字符串;如果不存在,该方法会把"abc"添加到字符串池中,然后再返回它的引用。)更好的办法:把所有的String都intern()到缓冲池去吧最好在用到new的时候就进行这个操作String s2 = new String("Monday").intern();然后就可以用==比较两个字符串的值了
END
方法/步骤2
二、简单数据类型和封装类中的equals和==
Java为每一个简单数据类型提供了一个封装类,每个基本数据类型可以封装成对象类型。 除int(Integer)和char(Character),其余类型首字母大写即成封装类类型名。double (Double), float(Float),long(Long), short(Short),byte(Byte),boolean(Boolean).
以int和Integer为例说明 Java中int和Integer区别如下:1.int是基本的数据类型,默认值可以为0;2.Integer是int的封装类,默认值为null;3.int和Integer都可以表示某一个数值;4.int和Integer不能够互用,因为他们两种不同的数据类型;int a1=1;int a2=1;Integer b1 =new Integer (1);Integer b2 =new Integer (1)a1==a2 这个是成立的,很简单,都知道a1==b1 这个是不成立的.表达式的值为 false ,它们是不同的数据类型(在jdk1.5以上版本中为true)b1==b2 这个也是不成立的.表达式的值为 false,虽然是相同的数据类型,但是它们是两个对象,==比较的是2个对象的地址,它们的地址是不相等的,内容相等都是1;b1.equals(b2)==true 这个是成立的,表达式的值为 true. 相同数据类型,两个对象,地址不同,内容相同, quals比较的是2个对象的内容,所以成立。(a.equals(b),因为equals比较的是两个对象,所以a,b都不能为基本数据类型,否则会出编译错误。)(在jdk1.5以上版本中,b可以为基本数据类型,a不可以)同理,其它的封装类和基本类型也是这样的.java中equals和==的区别==比较的是2个对象的地址,而equals比较的是2个对象的内容。
在jdk1.5以上的版本中,基本类型和封装类能自动转化,与String类型的对象和字符串常量类似。
Integer i1 = 123; Integer i2 = 123 int i = 123; Integer i3 = new Integer(123); Integer i4 = new Integer(123); System.out.println("i1 == i2 = "+(i1 == i2)); System.out.println("i1.equals(i2) = "+(i1.equals(i2))); System.out.println(); System.out.println("i3 == i4 = "+(i3 == i4)); System.out.println("i3.equals(i4) = "+(i3.equals(i4))); System.out.println(); System.out.println("i2 == i4 = "+(i2 == i4)); System.out.println("i2.equals(i4) = "+(i2.equals(i4))); System.out.println(); System.out.println("i == i2 = "+(i == i2)); System.out.println("i1.equals(i) = "+(i1.equals(i)));
System.out.println(); System.out.println("i == i4 = "+(i == i4)); System.out.println("i4.equals(i) = "+(i4.equals(i)));
i1 == i2 = true i1.equals(i2) = true
i3 == i4 = false i3.equals(i4) = true
i2 == i4 = false i2.equals(i4) = true
i == i2 = true i1.equals(i) = true
i == i4 = true i4.equals(i) = true
3
三、其他类怎么使用equals和==API里的类大部分都重写了equals方法,没有重写的一般是自己写的类,如果是你自己定义的一个类,比较自定义类用equals和==是一样的,都是比较句柄地址,因为自定义的类是继承于object,而object中的equals就是用==来实现的,你可以看源码。

和equals的区别

和equals的区别是功能不同,定义不同,运行速度不同。

1、功能不同

"=="是判断两个变量或实例是不是指向同一个内存空间。

"equals"是判断两个变量或实例所指向的内存空间的值是不是相同。

2、定义不同

"equals"在JAVA中是一个方法。

"=="在JAVA中只是一个运算符合。

3、运行速度不同

"=="比"equals"运行速度快,因为"=="只是比较引用。

"equals"比"=="运行速度要慢。

==既可以比较基本类型也可以比较引用类型 ,对于基本类型就是比较值,对于引用类型比较的就是内存地址,equals是属于java.lang.Ojbect类里的方法,如果该方法没有被重写过,默认也是==。

我们可以看到string类的equals方法是被重写过的,而且string类在日常开发中用的比较多,久而久之,就形成了equals是比较值得错误观点,具体要看这里有没有重写Ojbect的hashCode方法和equals方法来判断。

java equals和==的区别

对于Object类来说 , equals和== 是一样的 , 可以看一下Object类的 equals方法:

此时的equals 和 == 比较的都是 对象的内存地址 , 如果是基本数据类型  , 比较的是值 

java中 , 所有类都是Object的子类  , 对于一些JDK提供的基础类 , 很多都复写了Object的 equals方法 , 比如String , 复写之后 , 比较的是字符串的内容 , 又比如 Long , 比较的是数值 , 

还有Date , 比较的是时间戳 , 如果没有复写Object的 equals方法  , 那么这个对象的 equals和 == 是一样的

关于java里equals和区别和java==和equals的区别的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

java里equals和区别(java==和equals的区别)

本文编辑:admin

更多文章:


amaze ui 树状结构导航(网站结构怎么做SEO,树状结构与扁平结构的区别)

amaze ui 树状结构导航(网站结构怎么做SEO,树状结构与扁平结构的区别)

本篇文章给大家谈谈amaze ui 树状结构导航,以及网站结构怎么做SEO,树状结构与扁平结构的区别对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年4月15日 09:00

jquery多级联动下拉菜单(jQuery实现动态级联选择问题,比如3个下拉框,选择第一个其他的2个选项自动把内容选中.)

jquery多级联动下拉菜单(jQuery实现动态级联选择问题,比如3个下拉框,选择第一个其他的2个选项自动把内容选中.)

大家好,如果您还对jquery多级联动下拉菜单不太了解,没有关系,今天就由本站为大家分享jquery多级联动下拉菜单的知识,包括jQuery实现动态级联选择问题,比如3个下拉框,选择第一个其他的2个选项自动把内容选中.的问题都会给大家分析到

2025年9月15日 16:15

vue页面之间回调(vue.http 怎么定义jsonp的回调名)

vue页面之间回调(vue.http 怎么定义jsonp的回调名)

本篇文章给大家谈谈vue页面之间回调,以及vue.http 怎么定义jsonp的回调名对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录vue

2026年7月27日 06:30

a和b的ascii码(英文字母A的ASCII码值十进制的是65,那么B的ASCII码是什么)

a和b的ascii码(英文字母A的ASCII码值十进制的是65,那么B的ASCII码是什么)

这篇文章给大家聊聊关于a和b的ascii码,以及英文字母A的ASCII码值十进制的是65,那么B的ASCII码是什么对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录英文字母A的ASCII码值十进制的是65,那么B的ASCII码

2026年1月28日 12:30

免费图片素材库app(有什么免费的海报软件设计海报的软件)

免费图片素材库app(有什么免费的海报软件设计海报的软件)

本篇文章给大家谈谈免费图片素材库app,以及有什么免费的海报软件设计海报的软件对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录有什么免费的海报软件设计海报的软件什么app有海报模板有什么好的制作海报的APP免费好用的海报制作软

2025年12月24日 12:15

数据库是什么和什么的集合(数据库是什么)

数据库是什么和什么的集合(数据库是什么)

各位老铁们,大家好,今天由我来为大家分享数据库是什么和什么的集合,以及数据库是什么的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录数据库是什么数据库

2025年10月27日 10:45

学51单片机编程选用Keil uvision 和medwin哪个软件更好?为什么没有国产的C/C++的编译器

学51单片机编程选用Keil uvision 和medwin哪个软件更好?为什么没有国产的C/C++的编译器

今天给各位分享学51单片机编程选用Keil uvision 和medwin哪个软件更好的知识,其中也会对学51单片机编程选用Keil uvision 和medwin哪个软件更好进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开

2025年10月8日 05:45

用fprintf为什么写不进文件(急求C语言大神,下面的程序运行正常也能读取文件,但是无法向文件中写入,问题出在哪)

用fprintf为什么写不进文件(急求C语言大神,下面的程序运行正常也能读取文件,但是无法向文件中写入,问题出在哪)

今天给各位分享急求C语言大神,下面的程序运行正常也能读取文件,但是无法向文件中写入,问题出在哪的知识,其中也会对急求C语言大神,下面的程序运行正常也能读取文件,但是无法向文件中写入,问题出在哪进行解释,如果能碰巧解决你现在面临的问题,别忘了

2025年11月22日 18:45

constitute的英文短语(构成用英语怎么说)

constitute的英文短语(构成用英语怎么说)

大家好,constitute的英文短语相信很多的网友都不是很明白,包括构成用英语怎么说也是一样,不过没有关系,接下来就来为大家分享关于constitute的英文短语和构成用英语怎么说的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我

2025年8月29日 01:00

json字符(拼json字符串)

json字符(拼json字符串)

其实json字符的问题并不复杂,但是又很多的朋友都不太了解拼json字符串,因此呢,今天小编就来为大家分享json字符的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录拼json字符串字符串和json格式字符串的区

2026年2月25日 07:00

登陆界面背景图(Win7登录界面背景图在哪里改(输入密码那))

登陆界面背景图(Win7登录界面背景图在哪里改(输入密码那))

大家好,如果您还对登陆界面背景图不太了解,没有关系,今天就由本站为大家分享登陆界面背景图的知识,包括Win7登录界面背景图在哪里改(输入密码那)的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录Win7登录界面背景图

2026年7月27日 18:00

我的世界displayname(minecraft我的世界怎样给物品改名)

我的世界displayname(minecraft我的世界怎样给物品改名)

本篇文章给大家谈谈我的世界displayname,以及minecraft我的世界怎样给物品改名对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录minecraft我的世界怎样给物品改名我的世界team怎么召唤《我的世界》服务器怎

2026年1月14日 14:45

shell脚本写加减乘除运算(用shell做个加减乘除运算)

shell脚本写加减乘除运算(用shell做个加减乘除运算)

其实shell脚本写加减乘除运算的问题并不复杂,但是又很多的朋友都不太了解用shell做个加减乘除运算,因此呢,今天小编就来为大家分享shell脚本写加减乘除运算的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录用

2025年6月20日 21:30

sql语句查询男女生人数(SQL查询,按性别显示学生信息,并分别汇总男生女生人数)

sql语句查询男女生人数(SQL查询,按性别显示学生信息,并分别汇总男生女生人数)

本篇文章给大家谈谈sql语句查询男女生人数,以及SQL查询,按性别显示学生信息,并分别汇总男生女生人数对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录SQL查询,按性别显示学生信息,并分别汇总男生女生人数我现在有一个学校所有人

2026年7月25日 08:00

sufficient巧记(by 和on 的用法)

sufficient巧记(by 和on 的用法)

本篇文章给大家谈谈sufficient巧记,以及by 和on 的用法对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录by 和on 的用法enough的用法医学英语快速记忆-后缀quality 和quantity怎么有效区分by

2025年6月23日 11:00

伦勃朗的艺术成就是什么(伦勃朗的艺术成就及艺术特色)

伦勃朗的艺术成就是什么(伦勃朗的艺术成就及艺术特色)

大家好,伦勃朗的艺术成就是什么相信很多的网友都不是很明白,包括伦勃朗的艺术成就及艺术特色也是一样,不过没有关系,接下来就来为大家分享关于伦勃朗的艺术成就是什么和伦勃朗的艺术成就及艺术特色的一些知识点,大家可以关注收藏,免得下次来找不到哦,下

2025年9月5日 05:15

可编辑简历模板(编辑人员中文简历模板)

可编辑简历模板(编辑人员中文简历模板)

大家好,如果您还对可编辑简历模板不太了解,没有关系,今天就由本站为大家分享可编辑简历模板的知识,包括编辑人员中文简历模板的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录编辑人员中文简历模板文字编辑类工作简历模板编辑

2026年7月9日 05:00

成都劲力蓝色理想小区周边配套怎么样?蓝色理想 歌词

成都劲力蓝色理想小区周边配套怎么样?蓝色理想 歌词

这篇文章给大家聊聊关于蓝色理想,以及成都劲力蓝色理想小区周边配套怎么样对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录成都劲力蓝色理想小区周边配套怎么样蓝色理想 歌词请问蓝色理想这个词语里面的“蓝色”有什么特殊意义蓝色理想属于

2026年9月25日 02:15

enventually的中文翻译(伴侣的英文怎么拼)

enventually的中文翻译(伴侣的英文怎么拼)

大家好,关于enventually的中文翻译很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于伴侣的英文怎么拼的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!本文

2025年10月31日 19:30

webrtc java(webrtc 用c还是是 js)

webrtc java(webrtc 用c还是是 js)

各位老铁们好,相信很多人对webrtc java都不是特别的了解,因此呢,今天就来为大家分享下关于webrtc java以及webrtc 用c还是是 js的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录webrt

2025年6月22日 18:30

近期文章

本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索