string indexOf(int ch) 為什么我的返回值總是-1
package?test; public?class?Test?{ public?static?void?main(String[]?args)?{ //?TODO?Auto-generated?method?stub String?s?=?"sdsds5dsjdghsl"; int?ch?=?5; System.out.println(s.indexOf(ch)); } }
package?test; public?class?Test?{ public?static?void?main(String[]?args)?{ //?TODO?Auto-generated?method?stub String?s?=?"sdsds5dsjdghsl"; int?ch?=?5; System.out.println(s.indexOf(ch)); } }
2016-12-04
舉報
2016-12-04
返回-1表示沒有找到,你定義的ch是int型,indexof括號里的int值是對應字符的ascii碼的值,而字符串里沒有,所以返回-1
2017-02-23
Q】為什么indexOf(int ch)方法中的參數是整形的,而在用的時候卻是char型的如
public class Test
{
public static void main(String[] args){
String s1=new String("hello");
System.out.println(s1.indexOf('e'))
}
【K】
首先int類型32個位(1個符號位+31個數值位) char類型16個位(16個數值位)
char data = 97;這樣的賦值是沒有錯誤的 這是用ascii編碼來給char賦值?
Java當中 一個較小數據類型是直接可以賦值給大數據類型的而且在參數傳遞的時候同理,你可以寫這樣一行代碼:
int data = 'a'; //或者:
char c = 'e'
?所以Java當中在參數匹配的時候是可以用char類型參數匹配int類型參數的定義的
s1.indexOf('e')等價于s1.indexOf(101) 在這里用e的ASCII編碼來匹配int類型參數
在Java中,查閱API,還有重載函數 int indexOf(String str):
所以哪怕你是s1.indexOf(“e”)都不會有問題。
2017-02-22
int ch = '5';
2017-01-03
查找的是字符,每個字符是有對應的ascii碼值的。
2016-12-07
s.indexOf(5)表示s字符串里ascii值為5的字符出現的位置,但是首先ascii=5對應的并不是一個字符,它在s中顯然沒有出現,當找不到所查字符串時,返回-1。
indexOf()的正常使用方法是indexOf(String,int),返回String字符串在對象中從左往右數,從int位置開始的下一個出現位置的值,int的缺省值為0。