== 是运算符,equals是方法
-
== 是运算符
-
用于基本数据类型变量和引用数据类型变量。
-
基本数据类型比较是 数据 是否相等。
引用数据类型比较是 地址 是否相同,引用是否指向同一个对象。
int a1 = 10; int a2 = 10; System.out.println(a1 == a2);/* true */ int a3 = 10; char a4 = 10; System.out.println(a3 == a4);/* true */ int a5 = 10; double a6 = 10; System.out.println(a5 == a6);/* true */ int a7 = 10; short a8 = 10; System.out.println(a7 == a8);/* true */ int a9 = 10; long a10 = 10; System.out.println(a9 == a10);/* true */ Test test1 = new Test("a", 18); Test test2 = new Test("a", 18); System.out.println(test1 == test2);/* false */ String str1 = new String("ggggg"); String str2 = new String("ggggg"); System.out.println(str1 == str2);/* false */
-
-
equals() 是方法
-
是方法不是运算符。
-
仅适用于引用数据类型。
-
equals会被重写,不同类有不同的equals方法。大部分重写之后不再比较 地址 是否相同,而是比较 内容 是否相同。
-
和null比较永远都是false。
-
和类型不一样使用equlas比较,永远返回是false
-
编译器可以帮自定义类中自动生成equals方法,可以网上查找生成方法。
String str1 = new String("ggggg"); String str2 = new String("ggggg"); System.out.println(str1.equals(str2));/* true */ int a = 10; String b = new String("10"); System.out.println(b.equals(a));/* false */
-
-
面试题 : == 和 equals的区别
个人答案:equals如果没有重写使用Object类中的方法,和==没有区别。
如果重写的话,一般会有变化,比较的是内容是否相同