Java中的indexOf
和lastIndexOf
方法都用于在字符串中查找子字符串的位置,但它們之間存在一些關鍵差異:
indexOf
從字符串的開頭開始查找子字符串,而lastIndexOf
則從字符串的末尾開始查找子字符串。如果未找到子字符串,indexOf
返回-1,而lastIndexOf
也返回-1。indexOf
在找到子字符串后,會立即停止查找并返回當前位置。而lastIndexOf
則會繼續向后查找,直到找到子字符串或到達字符串的末尾。因此,lastIndexOf
可能會返回子字符串在字符串中出現的所有位置中的最后一個。indexOf
方法的第一個參數是要查找的子字符串,第二個參數是可選的,表示從哪個索引位置開始查找。如果省略第二個參數,則從字符串的開頭開始查找。而lastIndexOf
方法的第一個參數是要查找的子字符串,第二個參數也是可選的,表示從哪個索引位置開始查找。如果省略第二個參數,則從字符串的末尾開始查找。需要注意的是,如果子字符串為空字符串,indexOf
會返回0,而lastIndexOf
會返回字符串的長度減1。
以下是一些示例代碼,以幫助您更好地理解這兩個方法的區別:
String str = "Hello, world!";
// 使用indexOf查找子字符串"world"
int index1 = str.indexOf("world"); // 輸出7
// 使用lastIndexOf查找子字符串"world"
int index2 = str.lastIndexOf("world"); // 輸出7
// 使用indexOf查找子字符串"WORLD"(不區分大小寫)
int index3 = str.indexOf("WORLD"); // 輸出-1,因為字符串中不存在大寫的"WORLD"
// 使用lastIndexOf查找子字符串"WORLD"(不區分大小寫)
int index4 = str.lastIndexOf("WORLD"); // 輸出7,因為字符串中最后一個出現的"WORLD"是大寫的"WORLD"
// 使用indexOf從索引位置5開始查找子字符串"world"
int index5 = str.indexOf("world", 5); // 輸出7,因為從索引位置5開始查找,第一個出現的"world"在索引7處
// 使用lastIndexOf從索引位置5開始查找子字符串"world"
int index6 = str.lastIndexOf("world", 5); // 輸出-1,因為從索引位置5開始向后查找,未找到子字符串"world"