`
u011936142
  • 浏览: 43269 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

“==”和“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
		
		
		
	}


}

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








分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics