== 与 .equals() 的介绍:
== :用于比较地址,可用于基本数据类型:byte,short,char,int,long,float,double,boolean
基本数据类型比较不用.equals() 。
.equals() :比较对象的值
通常String Integer等是因为JDK重写了.equals()方法
正常类的.equals 也是比较地址
所以自定义类要实现比较的话 要重写Object的.equals()方法 。
代码例子:
public static void main(String[] args) {
String str1="aaaa"; //String缓冲池 中加入"aaaa"
String str2="aaaa"; // 直接从缓冲池取 "aaaa" 地址与str1一样
System.out.println(str1==str2); //true
System.out.println(str1.equals(str2)); //true
String str3=new String("aaaa"); // 直接创建新的"aaaa" 地址与str1不一样
System.out.println(str3==str1); //false
System.out.println(str3.equals(str1)); //true
str3=str3.intern();// 检查String缓冲池是否有"aaaa" 有的话就直接 返回池中的"aaaa"对象 ,否则将其加入String缓冲池
System.out.println(str3==str1); //true
System.out.println(str3.equals(str1)); //true
}
}