java中equals的用法?equals与==的区别是什么?

2020-04-13 10:53:07 java常见问答 9608

其实对于刚刚入行软件开发,特别是java开发的小伙伴来说,经常会出现几个看起来用法相差不多的java方法,这着实让人头疼,一时间没法正确分辨它们之间的细微区别,好了,下面就是小编整理的有关java中equals的使用,来看看equals跟==究竟是如何分辨的呢?

首先我们要明确的是,equals是一个函数,那么对于函数,我们可以这样看,可以关注它的返回值和参数,对于equals来说,它的返回值是boolen,参数是object,object是什么呢,通俗来说,object是一个类但它是一个特殊的类,它是所有类的父类,java的所有类都是由object类派生而来,不过大家在创建类时是不需要继承它的。

其实,equals的作用很简单,比较两个实例是否相同。如果是,返回true,不是则false。

实例如下:

public class Test {
public static void main(String args[]) {
String Str1 = new String("test");
String Str2 = Str1;
String Str3 = new String("test ");
boolean retunVal;
retunVal = Str1.equals( Str2 );
System.out.println("返回值 = " + retunVal);
retunVal = Str1.equals( Str3 );
System.out.println("返回值 = " + retunVal);
}
}

以上程序执行结果为:

返回值 = true
返回值 = true

我们知道,java中的数据类型,可分为两类:

一种是基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean

它们之间的比较,应用双等号==,比较的是他们的值。 基本数据类型比较(string 除外), == 和 equals 两者都是比较值;

第二种是复合数据类型(类)

当它们用==进行比较的时候,比较的是它们在内存中的存放地址,所以,除非是同一个new出来的对象,它们的比较后的结果为true,否则比较后结果为false。

java当中所有的类都是继承于object这个基类的,在object中的基类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地址, 对于复合数据类型之间进行equals比较,在没有覆写equals方法的情况下,他们之间的比较还是基于他们在内存中的存放位置的地址值的

但在一些类库当中这个方法被覆盖掉了,如String,Integer,Date,在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了。

因为Object的equals方法也是用双等号==进行比较的,所以比较后的结果跟双等号==的结果相同。

还想了解更多java入门知识,记得关注本站哦。