1.比较字符串
这一切都很好。但是你可以看到 thes1
和s2
strings 实际上是相同的,这意味着它们包含相同的文本。比较字符串时,如何告诉程序不要看String
对象的地址,而是看它们的内容?
为了帮助我们解决这个问题,Java 的String
类有equals
方法。调用它看起来像这样:
string1.equals(string2)
true
如果字符串相同,则此方法返回,false
如果它们不相同,则返回。
例子:
代码 | 笔记 |
---|---|
|
|
更多示例:
代码 | 解释 |
---|---|
|
false |
|
true |
|
true |
|
true |
2.不区分大小写的字符串比较
在上一个示例中,您看到比较结果为. 实际上,字符串不相等。但..."Hello".equals("HELLO")
false
显然,字符串不相等。也就是说,它们的内容具有相同的字母,只是字母的大小写不同。有什么办法可以比较它们并忽略字母的大小写吗?也就是说,这样产量?"Hello".equals("HELLO")
true
这个问题的答案是肯定的。在 Java 中,String
类型还有一个特殊的方法:equalsIgnoreCase
. 调用它看起来像这样:
string1.equalsIgnoreCase(string2)
该方法的名称大致翻译为比较但忽略大小写。方法名称中的字母包括两条竖线:第一条是小写字母L
,第二条是大写字母i
。不要让这让你感到困惑。
例子:
代码 | 笔记 |
---|---|
|
|
3.字符串比较示例
举一个简单的例子:假设你需要从键盘输入两行,并判断它们是否相同。这就是代码的样子:
Scanner console = new Scanner(System.in);
String a = console.nextLine();
String b = console.nextLine();
String result = a.equals(b) ? "Same" : "Different";
System.out.println(result);
4. 字符串比较的一个有趣的细微差别
您需要注意一个重要的细微差别。
如果Java 编译器在您的代码中(特别是在您的代码中)发现多个相同的字符串,那么它将只为它们创建一个对象以节省内存。
String text = "This is a very important message";
String message = "This is a very important message";
结果是内存将包含的内容:
如果你text == message
在这里比较,那么你会得到true
。所以不要对此感到惊讶。
如果出于某种原因你真的需要不同的引用,那么你可以这样写:
String text = "This is a very important message";
String message = new String ("This is a very important message");
或这个:
String text = "This is a very important message";
String message = new String (text);
在这两种情况下,text
和message
变量指向包含相同文本的不同对象。
GO TO FULL VERSION