自己总结一下:
1,equal
对于object类(或继承object类,但无实现自定义equal),是比较对象的类型的,除非同一对象,都不相等。
对于基本类型(如int)不能使用equal。
对于基本类型的封装类,equal是比较其类型
对于继承object类的,又实现了自定义equal(重写其equal),则是按自定义的equal执行,一般重写的就是重写成对其内容进行比较。一般api中继承object的类都已重写equal对内容进行比较。
int a = 3;
Integer d=3;
System.out.println(d.equals(a)); //true,因为其内容是相等的
System.out.println(a.equals(d)); //报错,因为基本类型int a没有equal这个方法
2,==
“==”比较两个变量本身的值,即两个对象在内存中的首地址。
二次总结
1.“==”比较两个变量本身的值,即两个对象在内存中的首地址。
“equals()”比较字符串中所包含的内容是否相同。(StringBuffer 和StringBuilder特殊,==和equal都是比较地址)
StringBuilder ww = new StringBuilder("111");
StringBuilder qq = new StringBuilder("111");
System.out.println(ww == qq); // false
System.out.println(ww.equals(qq)) // false
2.基本数据类型:boolean、char、byte、shot、int、long、float、double等没有equal方法
3.对于String ,基本类型的包装类型Boolean、Character、Byte、Shot、Integer、Long、Float、Double,适用1即==表比较地址,equal表示比较内容 |
|