一、Java中字元串的比較
在Java中,比較兩個字元串是否相等有兩種方法,如下:
String str1 = "hello"; String str2 = "world"; // 方法一:使用equals方法 boolean result1 = str1.equals(str2); // false // 方法二:使用==運算符 boolean result2 = (str1 == str2); // false
可以看到,第一種方法使用的是equals方法,第二種方法使用的是==運算符。
下面進一步介紹這兩種方法的原理。
二、Java中字元串的比較原理
1. equals方法
字元串是由一個字元數組實現的,equals方法會先比較字元串的長度是否相等,若不相等,則兩個字元串不相等;若相等,則依次比較字元串中每個字元是否相等,只要有不相等的字元,則兩個字元串不相等。
代碼示例:
String str1 = "hello"; String str2 = "HELLO"; boolean result1 = str1.equals(str2); // false boolean result2 = str1.equalsIgnoreCase(str2); // true,忽略大小寫
可以看到,equals方法區分大小寫,而equalsIgnoreCase方法忽略大小寫。
2. ==運算符
==運算符用於比較兩個對象是否指向同一個對象。對於字元串而言,Java為了提高內存使用率和效率,在內存中維護了一個字元串常量池,裡面緩存了所有的字元串字面量,任何一個字元串常量都指向常量池中的字元串。因此,如果兩個字元串指向了同一個字元串常量,那麼他們也會相等,反之則不相等。
代碼示例:
String str1 = "hello"; String str2 = "hello"; boolean result = (str1 == str2); // true
可以看到,兩個字元串都指向了字元串常量池中的同一個字元串常量,因此它們相等。
三、Java中字元串比大小實現方法
在Java中,對於字元串的大小比較,可以使用compareTo和compareToIgnoreCase方法。這兩個方法均返回一個整數,表示兩個字元串的大小關係。如果當前字元串小於目標字元串,則返回一個負整數;如果當前字元串大於目標字元串,則返回一個正整數;如果兩個字元串相等,則返回0。
1. compareTo方法
compareTo方法用於比較字元串的字典順序大小,比較規則如下:
- 如果當前字元串小於目標字元串,則返回一個負整數
- 如果當前字元串大於目標字元串,則返回一個正整數
- 如果兩個字元串相等,則返回0
代碼示例:
String str1 = "hello"; String str2 = "world"; int result = str1.compareTo(str2); // -15
可以看到,str1小於str2,因此返回一個負整數。
2. compareToIgnoreCase方法
compareToIgnoreCase方法與compareTo方法類似,但會忽略字元串的大小寫。比較規則如下:
- 如果當前字元串小於目標字元串,則返回一個負整數
- 如果當前字元串大於目標字元串,則返回一個正整數
- 如果兩個字元串相等,則返回0
代碼示例:
String str1 = "hello"; String str2 = "HELLo"; int result = str1.compareToIgnoreCase(str2); // 0
可以看到,str1與str2相等,因此返回0。
四、本文代碼示例
下面給出本文中提到的代碼示例:
String str1 = "hello"; String str2 = "world"; // 方法一:使用equals方法 boolean result1 = str1.equals(str2); // false // 方法二:使用==運算符 boolean result2 = (str1 == str2); // false String str3 = "hello"; String str4 = "HELLO"; // equals方法區分大小寫,equalsIgnoreCase方法忽略大小寫 boolean result3 = str3.equals(str4); // false boolean result4 = str3.equalsIgnoreCase(str4); // true // compareTo方法用於比較字典順序大小 int result5 = str1.compareTo(str2); // -15 // compareToIgnoreCase方法與compareTo方法類似,但會忽略字元串的大小寫 int result6 = str3.compareToIgnoreCase(str4); // 0
原創文章,作者:DIWJV,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/317352.html