文章预览
大家好,我是鸭哥。 最近在网上看到有人问为什么Java的 String 不能用 == 来比较值,我还是忍不住要掰扯几句。毕竟在C++、C#甚至Go里面,很多情况下 == 都能直接用来比较字符串,这事儿咋到了Java这儿,就突然画风变了呢? 如果你是Java程序员,肯定对这两个符号很熟悉: == 和 equals 。乍一看,大家都觉得:哎,这俩东西差不多嘛,结果就常常在实际开发中栽了跟头。 == 在 Java 中, 比较的是两个引用对象是否指向同一个内存地址 。而 equals 方法则 比较的是两个对象的“内容”是否相等 。 来,给大家贴点代码,直观感受下: String str1 = new String( "hello" ); String str2 = new String( "hello" ); System.out.println(str1 == str2); // false System.out.println(str1.equals(str2)); // true 咋回事呢? str1 和 str2 都是“hello”,为啥 == 比较出来是 false 呢?因为 str1
………………………………