Java中"equals"和"=="的区别
一,equals
它是一个对象的 一个方法
只对对象(引用类型)有用
比较两个引用变量是否只向堆上同一个对象
二,==
它是一个运算符
数值类型:比较的是两个数值的字节字节是否相等
引用类型:判断两个引用是否指向同一个对象
注:
equals 方法不能用于基本数据类型的变量,如果没有对 equals 方法进行重写,则比较的是引用类型的变
量所指向的对象的地址。
三,代码验证
public class TestEquals { public static void main(String[] args) { Integer i = 2; int j = 2; System.out.println(i==j);//true System.out.println(i.equals(j));//true Dog dog1 = new Dog(); Dog dog2 = new Dog(); Dog dog3 = dog1; System.out.println("==========="); System.out.println(dog1==dog2);//false System.out.println(dog1==dog3);//true System.out.println(dog2==dog3);//false System.out.println("==========="); System.out.println(dog1.equals(dog2));//false System.out.println(dog1.equals(dog3));//true System.out.println(dog2.equals(dog1));//false String s1 = "hello"; String s2 = "hello"; System.out.println("==========="); System.out.println(s1==s2);//true System.out.println(s1.equals(s2));//true } } class Dog{ }