java中equals和==以及toString

我们通常在控制台输出时使用System.out.print(),print只能直接输出基本类型和字符串,对于其他的类型直接输出将会输出@开头的引用,因此若需要输出对应的内容则需要使用toSring方法。

toString方法属于Object,Object是所有类的顶级父类,都继承了toString方法,在实际使用的时候需要重写toString方法然后实现内容的直接输出。

==用来判断两个变量是否相等,如果是基本类型,则只要值相等,判断的结果就是true,例如65和‘A’比较,结果就是true。如果是比较的引用类型,那么只有在两个变量指向的是同一对象时才是true,例如String a="111",String a1=new String("111");他们==比较的结果就是false,因为他们是两个对象。

如果想要让两个只要内容相同的对象比较结果就是true,那么可以使用equals来比较,但是需要对equals进行重写。

equals默认情况下内部就是==比较,所以如果不重写的话,比较结果和==比较一样,在String中已经重写了equals方法。

重写equals方法是自定义相等的规则,所以不仅仅是能实现上述的情况,还可以让不相等的对象相等,是看怎么写了。

正确重写equals应遵循的条件:

1.对于任意x,x.equals(x)结果要是true;自反性

2.对于任意x、y,如果x.equals(y)是true,那么y.equals(x)也应该是true;对称性

3.对于任意的x、y、z,如果x.equals(y)是true,y.equals(z)是true,那么x.equals(z)也应该是true;传递性

4.对于任意x、y,若对象中用于等价比较的信息未变,那么无论调用多少次x.equals(y)的结果应该是同样的,要么都是true要么都是false;一致性

5.对于任何非null的对象,x.equals(null)一定是false;

重写equals方法的时候,一般要用到instanceof和强制类型转换,然后当类型匹配时再进行比较。

时间: 2024-10-30 18:55:59

java中equals和==以及toString的相关文章

(十八)java中equals和==以及toString

     我们通常在控制台输出时使用System.out.print(),print只能直接输出基本类型和字符串,对于其他的类型直接输出将会输出@开头的引用,因此若需要输出对应的内容则需要使用toSring方法.     toString方法属于Object,Object是所有类的顶级父类,都继承了toString方法,在实际使用的时候需要重写toString方法然后实现内容的直接输出.     ==用来判断两个变量是否相等,如果是基本类型,则只要值相等,判断的结果就是true,例如65和'A'

java中equals和==的区别

[LeetCode]–155. Min Stack 在这个问题中,我遇到了==和equals的问题,虽然试一下就能得出结果,但是我想弄明白. java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolean 他们之间的比较,应用双等号(==),比较的是他们的值. 2.复合数据类型(类) 当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的

java中equals和等号(==)的区别浅谈_java

java中的数据类型,可分为两类:1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolean   他们之间的比较,应用双等号(==),比较的是他们的值. 2.复合数据类型(类)   当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false.JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个eq

java中equals和==的区别介绍

示例一.  代码如下 复制代码 public class Demo {     public static void main(String args[]) {         String str="soka";         String str2 = "soka";         System.out.println("soka".equals(str));         System.out.println(str==str2);

Java语法----Java中equals和==的区别

[正文] 平时在学Android和Java语言的时候,总是碰到"equals"和"=="这两个字符,老感觉差不多:其实还是有一些区别的,今天干脆把它们彻底弄清楚. 一.java当中的数据类型和"=="的含义: 基本数据类型(也称原始数据类型) :byte,short,char,int,long,float,double,boolean.他们之间的比较,应用双等号(==),比较的是他们的值. 引用数据类型:当他们用(==)进行比较的时候,比较的是他

getmessage tostring-java中的getMessage()和toString()有啥区别?见下代码

问题描述 java中的getMessage()和toString()有啥区别?见下代码 class ZiDingYiChang { public static void main(String[] args) { Demo a = new Demo(); try { int b=a.div(4,-2); System.out.println(b); } catch (FuShuException e) { System.out.println(e.toString());//为什么说这里的toS

java中”==”和”Equal”的区别

对于一些基本数据类型,int,long,bool,还有char!,"=="都是表示值相等的意思,没有equal方法. equal方法是object对象里面的方法,java中String不是基本数据类型,而是一个类,它们都是继承object类,还有Integer和int的区别也是Integer是一个类! 在object类中,equal方法与"=="是等同的,"=="不是表示值相等,而是比较对象的地址是否相等!Integer和String都重写了(没

java中的equals()和toString()方法实例详解_java

java中的equals()和toString()方法 , 这里写个小例子帮助大家学习理解此部分知识. /* 所有对象的父类Object Object中的方法: equals() 对象是否相同的比较方法 toString()对象的字符串表现形式 */ class Person { String name; int age; Person(String name, int age) { this.name = name; this.age = age; } } class ObjectDemo {

Java中判断对象是否相等的equals()方法使用教程_java

Object类中的equals方法用于检测一个对象是否等于另一个对象.在Object类中,这个方法判断两个对象是否具有相同的引用,如果两个对象具有相同的引用,它们一定是相等的.从这点上看,将其作为默认操作也是合乎情理的.然而,对于多数类类说,这种判断并没有什么意义,例如,采用这种方式比较两个PrintStream是否相等就完全没有意义.然而,经常需要检测两个对象状态的相等性,如果两个对象的状态相等,就认为这两个对象是相等的.所以一般在自定义类中都要重写equals比较. 下面给出编写一个完美eq