java中“==“与equals()的区别

本文详细介绍了Java中'=='运算符与equals()方法的区别。'=='在基本数据类型中比较值,在引用类型中比较内存地址;而在引用类型中,未重写equals()时比较内存地址,重写后则可比较内容。示例代码展示了这些区别,并强调了在字符串中equals()用于比较内容。

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

==:关系运算符

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

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()方法)

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

爱生活,爱自己,让我们一起加油!!!😀

学生课程管理系统是一个基于Vue.js前端框架SpringBoot后端框架的现代化Web应用系统,主要用于高校或教育机构的学生课程管理场景。该系统采用前后端分离架构,实现了学生、教师管理员角色的完整业务流程,为毕业设计、课程设计提供了高质量的技术实现方案。系统功能方面,学生课程管理系统涵盖了课程管理、选课管理、成绩管理、用户管理等多个核心模块。学生用户可以查看课程信息、进行在线选课、查询个人成绩课表;教师用户可以发布课程信息、管理学生选课、录入查询学生成绩;管理员用户则负责系统用户管理、课程信息维护、系统数据统计等高级功能。系统界面友好,操作流程清晰,符合现代教育管理需求。技术实现上,前端采用Vue.js框架配合ElementUI组件库,实现了响应式设计良好的用户体验。后端基于SpringBoot框架构建,采用分层架构设计,包含控制器层、服务层、数据访问层等。系统使用了单例模式、工厂模式观察者模式等多种设计模式,提高了代码的可维护性扩展性。数据交互通过axios实现前后端通信,保证了数据传输的效率安全性。该毕业设计项目完整实现了学生课程管理系统的所有功能模块,代码结构清晰,注释详细,适合作为计算机科学、软件工程等相关专业的毕业设计参考。系统源码包含完整的项目文件、数据库脚本部署文档,论文部分详细阐述了系统设计思路、技术选型依据实现过程。对于正在寻找毕业设计课题的学生来说,这个系统提供了从需求分析、系统设计到编码实现的全过程参考。项目采用当前主流的技术栈,架构设计合理,既体现了技术的前沿性,又保证了系统的实用性。无论是用于学习Vue.jsSpringBoot技术,还是作为课程设计、毕业设计的模板,都具有很高的参考价值。下载该资源后,您可以获得完整的系统源码配套论文,快速了解前后端分离项目的开发流程,掌握现代化Web系统的设计方法。系
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值