首页 Java Java基础 必须知道 java中“==“与equals()的区别

必须知道 java中“==“与equals()的区别

Jan 18, 2021 pm 05:20 PM
equals() java

今天我们探讨一下Java中"=="与equals()的区别

必须知道 java中“==“与equals()的区别

学习推荐:java基础

==:关系运算符

   在基本数据类型中比较两个值的内容是否相等
   
   在引用类型型中比较的是两个对象的地址是否相等

equals()是Object类中的方法

1.基本数据类型无法使用equals()方法

2.在引用类型中若是没有重写Object类时,则默认使用Object类的equals方法,则仍然
利用“==”比较两个对象的内存地址,若是重写Object类的equals方法,则调用子类重写后		  
的方法可以进行内容或值的比较

例如字符串中,equals()方法重写Object类的equals()方法,从而可以直接比较字符串的
内容。(可以自行观察字符串equals()源代码,此处不细讲)

"=="的具体用法,代码如下:

package Test01;//"=="的具体实例public class Demo02 {
	public static void main(String[] args) {
		int a1=10;
		int a2=10;
		String str1=new String("aaa");  //在堆中开辟了新的空间,从而内存地址不相等
		String str2=new String("aaa");
		//比较基本数据类型
		System.out.println(a1==a2);
		//引用数据类型
		System.out.println(str1==str2);
	}}

结果:
在这里插入图片描述


equals的用法,代码如下:
1、创建一个对象,调用Object类的equals()方法,比较内存地址

package Test01;//equals()的具体实现package Test01;//Object类的equals()方法public class Demo02{
	public static void main(String[] args) {
		Demo03 demo=new Demo03("aaa");
		Demo03 demo1=new Demo03("aaa");
		System.out.println(demo.equals(demo1));
		
	}}class Demo03 {
	public String str;
	public Demo03(String str){
		this.str=str;
	}
	public String getStr() {
		return str;
	}}

结果为:
在这里插入图片描述
2、例如字符串中,equals()方法重写Object类的equals()方法,从而可以直接比较字符串的内容。

package Test01;//equals()的在字符串中的方法重写public class Demo02{
	public static void main(String[] args) {
		String str1=new String("aaa");
		String str2=new String("aaa");
		System.out.println(str1.equals(str2));
	}}

结果为:
在这里插入图片描述
总结:

1、"=="在基本数据类型中比较值,在引用类型中比较内存地址

2、equals()在基本数据类型中不可使用
引用类型: 要是对象直接比较,则是调用Object类中equals()方法,要是想要比内容,则可以重写Object类的equals()方法。
(String类的equals()方法)

今天就是我想要给大家分享的内容,若有错误,欢迎指正,谢谢

相关免费学习推荐:java基础教程

以上是必须知道 java中“==“与equals()的区别的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

Rimworld Odyssey如何钓鱼
1 个月前 By Jack chen
Kimi K2:最强大的开源代理模型
1 个月前 By Jack chen
我可以有两个支付帐户吗?
4 周前 By 下次还敢

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Laravel 教程
1602
29
PHP教程
1506
276
键盘上的音量键无法正常工作 键盘上的音量键无法正常工作 Aug 05, 2025 pm 01:54 PM

First,checkiftheFnkeysettingisinterferingbytryingboththevolumekeyaloneandFn volumekey,thentoggleFnLockwithFn Escifavailable.2.EnterBIOS/UEFIduringbootandenablefunctionkeysordisableHotkeyModetoensurevolumekeysarerecognized.3.Updateorreinstallaudiodriv

Edge PDF查看器不起作用 Edge PDF查看器不起作用 Aug 07, 2025 pm 04:36 PM

testthepdfinanotherapptoderineiftheissueiswiththefileoredge.2.enablethebuilt inpdfviewerbyTurningOff“ eflblyopenpenpenpenpenpdffilesexternally”和“ downloadpdffiles” inedgesettings.3.clearbrowsingdatainclorwearbrowsingdataincludingcookiesandcachedcachedfileresteroresoreloresorelorsolesoresolesoresolvereresoreorsolvereresoreolversorelesoresolvererverenn

计算的属性与VUE中的方法 计算的属性与VUE中的方法 Aug 05, 2025 am 05:21 AM

computed有缓存,依赖不变时多次访问不重新计算,而methods每次调用都执行;2.computed适用于基于响应式数据的计算,methods适合需要参数或频繁调用但结果不依赖响应式数据的场景;3.computed支持getter和setter,可实现数据的双向同步,methods不支持;4.总结:优先使用computed以提升性能,当需要传参、执行操作或避免缓存时使用methods,遵循“能用computed就不用methods”的原则。

Apache性能调整最佳实践 Apache性能调整最佳实践 Aug 05, 2025 am 06:59 AM

UseEventMPMforhigh-concurrencyworkloads,especiallywithPHP-FPM,orPreforkonlyifrequiredbynon-thread-safemodules.2.EnableKeepAlivewithMaxKeepAliveRequestssetto100andKeepAliveTimeoutbetween2–5secondstobalanceconnectionreuseandresourceusage.3.ConfigureEve

以示例运行子过程 以示例运行子过程 Aug 06, 2025 am 09:05 AM

使用os/exec包运行子进程,通过exec.Command创建命令但不立即执行;2.使用.Output()运行命令并捕获stdout,若退出码非零则返回exec.ExitError;3.使用.Start()非阻塞启动进程,结合.StdoutPipe()实时流式输出;4.通过.StdinPipe()向进程输入数据,写入后需关闭管道并调用.Wait()等待结束;5.必须处理exec.ExitError以获取失败命令的退出码和stderr,避免僵尸进程。

Python检查路径是否为目录示例 Python检查路径是否为目录示例 Aug 04, 2025 pm 02:12 PM

最常用的方法是使用os.path.isdir()或pathlib.Path.is_dir()。1.使用os.path.isdir():importos,path="/path/to/your/directory",ifos.path.isdir(path):print("这是一个目录")else:print("这不是一个目录或路径不存在")。2.使用pathlib.Path.is_dir()(推荐):frompathlibimportP

优化复杂数据结构的嵌套foreach循环 优化复杂数据结构的嵌套foreach循环 Aug 06, 2025 pm 12:53 PM

要优化嵌套foreach循环,首先应避免冗余迭代,可通过索引数据将时间复杂度从O(n×m)降至O(n m);其次,若结构非真正层级,应使用SelectMany等方法展平数据;第三,通过条件判断提前跳出或跳过不必要的处理;第四,选择合适的数据结构如字典或哈希集以提升查找效率;第五,在操作独立且耗时的情况下可谨慎使用并行化;第六,将复杂逻辑提取为独立方法或查询以提升可读性和可维护性。优化核心在于减少复杂度、合理组织数据,并始终评估嵌套的必要性,最终实现高效、清晰、可扩展的代码。

您能解释Java中的方法过载和覆盖方法吗? 您能解释Java中的方法过载和覆盖方法吗? Aug 06, 2025 am 07:41 AM

方法重载和方法重载是Java中实现多态的两种机制。1.方法重载发生在同一个类中,要求方法名相同但参数列表不同(参数数量、类型或顺序),属于编译时多态,返回类型可不同但不能仅靠返回类型重载,可有不同的访问修饰符和异常声明;2.方法重写发生在继承关系中,子类提供父类已有方法的具体实现,要求方法签名相同,返回类型兼容,访问修饰符不能更严格,属于运行时多态,必须使用实例方法且可通过@Override注解确保正确重写。两者共同提升代码可读性和可扩展性。

See all articles