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
舉報(bào)
2016-12-04
返回-1表示沒(méi)有找到,你定義的ch是int型,indexof括號(hào)里的int值是對(duì)應(yīng)字符的ascii碼的值,而字符串里沒(méi)有,所以返回-1
2017-02-23
Q】為什么indexOf(int ch)方法中的參數(shù)是整形的,而在用的時(shí)候卻是char型的如
public class Test
{
public static void main(String[] args){
String s1=new String("hello");
System.out.println(s1.indexOf('e'))
}
【K】
首先int類型32個(gè)位(1個(gè)符號(hào)位+31個(gè)數(shù)值位) char類型16個(gè)位(16個(gè)數(shù)值位)
char data = 97;這樣的賦值是沒(méi)有錯(cuò)誤的 這是用ascii編碼來(lái)給char賦值?
Java當(dāng)中 一個(gè)較小數(shù)據(jù)類型是直接可以賦值給大數(shù)據(jù)類型的而且在參數(shù)傳遞的時(shí)候同理,你可以寫這樣一行代碼:
int data = 'a'; //或者:
char c = 'e'
?所以Java當(dāng)中在參數(shù)匹配的時(shí)候是可以用char類型參數(shù)匹配int類型參數(shù)的定義的
s1.indexOf('e')等價(jià)于s1.indexOf(101) 在這里用e的ASCII編碼來(lái)匹配int類型參數(shù)
在Java中,查閱API,還有重載函數(shù) int indexOf(String str):
所以哪怕你是s1.indexOf(“e”)都不會(huì)有問(wèn)題。
2017-02-22
int ch = '5';
2017-01-03
查找的是字符,每個(gè)字符是有對(duì)應(yīng)的ascii碼值的。
2016-12-07
s.indexOf(5)表示s字符串里ascii值為5的字符出現(xiàn)的位置,但是首先ascii=5對(duì)應(yīng)的并不是一個(gè)字符,它在s中顯然沒(méi)有出現(xiàn),當(dāng)找不到所查字符串時(shí),返回-1。
indexOf()的正常使用方法是indexOf(String,int),返回String字符串在對(duì)象中從左往右數(shù),從int位置開(kāi)始的下一個(gè)出現(xiàn)位置的值,int的缺省值為0。