欢迎光临
我们一直在努力

java:==与equals的区别

1、比较的方式

==进行的是数值或地址比较。

equals是我们自己在类中定义的方法,自己去构建判断逻辑。

2、代码解释

2.1 ==

在==中,八大基础类型除boolean外,之间都进行的是数值间的比较。

在对象之间,比较的是两个对象指向地址是否一致。

案例代码

System.out.println("——————————八大基础类型——————-");
System.out.println("1 == 1为" + ( 1 == 1 ));
System.out.println("1 == 2为" + ( 1 == 2 ));
System.out.println("1.0 == 1为" + ( 1.0 == 1 ));
System.out.println("1.0 == 1.0为" + ( 1.0 == 1.0 ));
System.out.println("1.0 == 1.1为" + ( 1.0 == 1.1 ));
System.out.println("1.0f == 1为" + ( 1.0f == 1 ));
System.out.println("1.0f == 1.0为" + ( 1.0f == 1.0 ));
System.out.println("97 == a为" + ( 97 == 'a' ));
System.out.println("false == true为" + ( false == true ));

System.out.println("——————————–对象———————–");
Object object01 = new Object();
Object object02 = new Object();
System.out.println("object01 == object02为" + ( object01 == object02 ) );

运行结果

2.2 equals

下方是在Object中的equals方法,Object又是所有java类的父类,所以在未重写equals方法时,equals的作用与==一致。

重写后,根据重写的判断逻辑来。

下方是String类重写的equals方法

案例代码

String string01 = new String("zjx");
String string02 = new String("zjx");
String string03 = "zjx";
System.out.println("string01.equals(string02)为" + ( string01.equals(string02) ) );
System.out.println("string01.equals(string03)为" + ( string01.equals(string03)));

Object object01 = new Object();
Object object02 = new Object();
System.out.println("object01.equals(object02)为" + ( object01.equals(object02) ) );

运行结果

3、使用细节

八大基础类型不可以和类对象用==比较,但可以与其包装类比较,因为有自动装箱和自动拆箱机制。

同样,equals也只能在对象间使用。

4、案例代码

public class Example05 {

public static void main(String[] args) {

// ==与equals之间的区别
System.out.println("———————————-==——————-");
testDengHao();
System.out.println("——————————-equals——————-");
testEquals();

}

public static void testDengHao(){

System.out.println("——————————八大基础类型——————-");
System.out.println("1 == 1为" + ( 1 == 1 ));
System.out.println("1 == 2为" + ( 1 == 2 ));
System.out.println("1.0 == 1为" + ( 1.0 == 1 ));
System.out.println("1.0 == 1.0为" + ( 1.0 == 1.0 ));
System.out.println("1.0 == 1.1为" + ( 1.0 == 1.1 ));
System.out.println("1.0f == 1为" + ( 1.0f == 1 ));
System.out.println("1.0f == 1.0为" + ( 1.0f == 1.0 ));
System.out.println("97 == a为" + ( 97 == 'a' ));
System.out.println("false == true为" + ( false == true ));

System.out.println("——————————–对象———————–");
Object object01 = new Object();
Object object02 = new Object();
System.out.println("object01 == object02为" + ( object01 == object02 ) );

}

public static void testEquals(){

String string01 = new String("zjx");
String string02 = new String("zjx");
String string03 = "zjx";
System.out.println("string01.equals(string02)为" + ( string01.equals(string02) ) );
System.out.println("string01.equals(string03)为" + ( string01.equals(string03)));

Object object01 = new Object();
Object object02 = new Object();
System.out.println("object01.equals(object02)为" + ( object01.equals(object02) ) );

}

}

赞(0)
未经允许不得转载:171主机测评 » java:==与equals的区别
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址