1. java中==和equals (String比较)
java中字符串双等号比较值(引用的内存地址)是否相同;String类重写equals方法,比较的是字符串内容是否相同
public class StringJava {
public static void main(String[] args) {
String s1 = new String("abc");
String s2 = new String("abc");
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
}
}

2. scala中==和equals、eq (String比较)
java中的基本数据类型,没有equals方法,如果2个值需要比较,只能采用双等号运算符。
而Scala完全面向对象,因此都采用方法的方式比较对象,但是scala为了兼容其他语言,仍然保留双等号的功能,但是比较方式发生改变。如果使用双等号进行数据的比较,首先进行非空判断,然后使用equals方法比较。如果需要比较对象的内存地址,使用eq方法
object StringScala {
def main(args: Array[String]): Unit = {
val a = new String("abc")
val b = new String("abc")
println(a == b)
println(a.equals(b))
println(a.eq(b))
}
}

注:
== 运算符编译scala为java代码后,如下所示

本文对比了Java中`==`和`equals(String)`的用途,以及Scala中双等号、`equals`和`eq`在字符串比较上的差异。通过实例展示了两种语言中如何正确使用这些方法来判断字符串内容或地址的相等性。
250

被折叠的 条评论
为什么被折叠?



