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
}
}
以上均为个人理解,如果有不同观点欢迎和小宇沟通.
分享到:
相关推荐
详细介绍和讲解Java中的==和equals区别
==运算符和Equals()方法区别,从网上找到的,大家看一看吧~
java中比较值大小,==和equals的区别,基本数据类型和引用数据类型比较值方法
==和equals方法究竟有什么区别? == 操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。 ...
关于Java中==的用法与equals的用法,醉重要的是比较它们的不同之处
能够加强对java中equals与==区别的理解。
接触c#一年了,一直没搞懂“==”和equals之间的具体区别,今天特意研究了一番,终于豁然开朗了,高兴中!给大家分享
对于开发的程序员小伙伴,大家肯定对于==和equals不陌生,而且会经常用到他,那么又有几个能够说清楚了==和equals是怎么回事呢?他了呢两个有什么区别呢? 比较 == 比较的是栈中的值,基本数据类型是变量值,引用...
主要介绍了java基础之 “==”与“equals”区别详解,需要的朋友可以参考下
String中==与equals区别验证
java中equals和==的区别.doc java中equals和==的区别.doc
在本文中,我们将讨论“ ==”与“ .Equals in C#”之间的区别。
equals和==的区别?equals与==的区别?equals和==有什么区别? Java解惑系列之一--equals和==之间究竟有什么区别 稍微学过一些java的同学都可能在网络上看到这样的一道题: 在java语言当中,equals和==之间究竟有...
equals与==之间的区别,记事本详解
Java面试题07.==和equals的区别.mp4
主要介绍了C#中的 == 和equals()的区别,对不同点进行了阐述,感兴趣的小伙伴们可以参考一下
== == :既可以比较基本类型,也可以比较引用类型,如果比较八大数据类型主要比较的是值,比较引用类型主要比较的是内存地址值 equals(没有被重写过) ...总结:==跟equals的区别 1. ==既可以比较基本
【Java面试题】equals与==的区别
主要介绍了java 中equals和==的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
主要介绍了java==运算符和equals()方法的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧