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
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”)都不会有问题。
举报