📅  最后修改于: 2023-12-03 15:40:40.305000             🧑  作者: Mango
在 Java 中,比较字符串时需要使用 equals()
方法。在 jShell 上也没有什么不同,我们可以使用 String
类的 equals()
方法进行比较。
但是,在 jShell 上,我们也可以使用 ==
操作符进行字符串的比较。这是因为 jShell 上字符串会进行缓存,如果两个字符串内容相同,则它们引用的是同一个对象,因此 ==
操作符就可以直接比较它们的引用地址。
下面是一个例子:
jshell> String s1 = "hello";
s1 ==> "hello"
jshell> String s2 = "hello";
s2 ==> "hello"
jshell> s1 == s2
$1 ==> true
jshell> String s3 = new String("hello");
s3 ==> "hello"
jshell> s1.equals(s3)
$2 ==> true
jshell> s1 == s3
$3 ==> false
在上面的例子中,我们定义了三个字符串 s1、s2 和 s3。s1 和 s2 的内容都是 "hello",因此它们的引用地址是相同的。s1 和 s2 进行 ==
操作符比较时返回 true。而 s3 是通过 new
操作符创建的新字符串,它的引用地址和 s1、s2 不同,因此 s1 和 s3 进行 ==
操作符比较时返回 false。但是 s1 和 s3 的内容相同,因此它们进行 equals()
方法比较时返回 true。
需要注意的是,在实际开发中,我们应该优先使用 equals()
方法进行字符串的比较,因为 ==
操作符可能存在缺陷,特别是当涉及到字符串的拼接、去空格等操作时。而 equals()
方法可以确保我们比较的是字符串的内容,而不是引用地址。
以上就是比较 jShell 上字符串的方法。