java中 == 与 equal 的区别
废话不多说了,开门见山吧,先来看一段代码: String str1 = new String("str"); String str2 = new String("str"); System.out.println("==比较 :"+ (str1 == str2)); System.out.println("equal比较:"+ str1.equals(str2)); String str3 = "str1"; String str4 = "str1"; System.out.println("==比较 :"+ (str3 == str4)); System.out.println("equal比较:"+ str3.equals(str4)); false equal比较:true true equal比较:true 根据打印的可以发现使用equal比较时无论是使用自动装箱来实例化还是用new来实例化,返回的都true,而用==则不一样了,自动装箱来实例化的返回的是true,而用new来 实例化的返回的确实false;先不急着解决为什么,先来了解下equals和==的区别,到时候就可以知道答案了 equals方法最初是在所有类的基类Object中进行定义的,源码是 public boolean equals(Object obj) { return (this == obj); }