“==”和“equals”的区别

equals方法:

本属于Object,

但是 String类从Object中继承并重写了equals方法;被更改的作用,用来检测两个对象是否相等,即两个对象的内容是否相等,(区分大小写);


"==":用来比较引用和比较基本数据类型时具有不同的功能;

(1)比较基本数据类型,如果两个值相同,则结果为true;

(2)而在比较引用时,如果引用指向内存中的同一对象,结果为true;



package day03;


public class Test_equals {
	
	String name;
	String sex;
	int age;
	
	Test_equals(String name,String sex, int age){
		this.name=name;
		this.sex=sex;
		this.age=age;
	}
	
	public static void main(String[] args) {
		//创建两个对象
		Test_equals t1=new Test_equals("软件小宇", "男", 20);		
		Test_equals t2=new Test_equals("软件小宇", "女", 21);
		
		
		//    用"=="相互比较,比较的是其在栈内存中    存储的地址是否指向同一内存存储空间
		System.out.println(t1 == t2);//显示结果  "false" //
		
		//用 "equals"  进行比较,现在只是普通调用   object中的equals()方法,判断括号中的对象"t2"是否与t1 "相等",
		//判断相等的依据是与   "=="  比较的引用(即地址)是否指向同一对象,由于是new出来的对象所以在栈内存中都会分配一个唯一的地址,且开辟新的内存存储
		
		System.out.println(t1.equals(t2));  //显示结果 "false"
		
		System.out.println("#################################################");
		
		
		//首先,变量在创建后会在内存中开辟一块存储空间,并将变量名作为其对程序显示的地址,用户可以通过变量名访问到对应存储的数据
		//然后就是,储存机制,当内存中已经存储过内容和数据类型一样的数据时,不会再开辟新的内存空间,后创建的变量直接指向已有的内存空间,
		
		System.out.println(t1.name == t2.name);//由于引用指向同一对象的存储空间,所以返回true
		System.out.println(t1.name.equals(t2.name));由于引用指向同一对象,所以返回true
		
		
		//示例二;
		System.out.println("示例二#################################################################");
		
		String str1=new String("软件小宇");
		String str2=new String("软件小宇");
		
		String str3="软件小宇";
		String str4="软件小宇";
		
		//String重写了object中的equals()方法,  被用来检测两个对象的内容是否相等
		
		System.out.println(str1 == str2 );//false     //由于str1与str2都是new出来的,都拥有自己的存储空间,所以返回false
		System.out.println(str1.equals(str2));//true  // 由于String重写了object中的equals方法,用来判断的是,对象中存储的内容,所以返回true
		
		System.out.println(str1 == str3);//false      //str1是new出来的对象,拥有自己的存储空间,str3要同样拥有自己的存储空间
		System.out.println(str1.equals(str3));	//true   由于String重写了object中的equals方法,用来判断的是,对象中存储的内容,所以返回true
		
		System.out.println(str3 == str4);//true         //由于引用指向同一对象的存储空间,所以返回true
		System.out.println(str3.equals(str4));//true     由于String重写了object中的equals方法,用来判断的是,对象中存储的内容,所以返回true
		
		
		
	}


}

以上均为个人理解,如果有不同观点欢迎和小宇沟通.








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值