A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李林轩 黑马帝   /  2012-1-7 22:43  /  2257 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

返回指定字符在此字符串中第一次出现处的索引中indexOf(int ch)方法参数为什么是int型呢?不是传入的是一个char型的字符吗?

6 个回复

倒序浏览
以前我也有过同样的问题啊,,就是一直想不通,,,   类型都不一样 ,怎么能传了..

后来才明白,因为这是用ascii编码来给char赋值 ,所以Java当中char类型是可以给int类型赋值的。

评分

参与人数 2技术分 +1 黑马币 +1 收起 理由
admin + 1
李林轩 + 1

查看全部评分

回复 使用道具 举报
char与Int可以互转
回复 使用道具 举报
在Java当中char类型是可以给int类型赋值的,是可以相互赋值的
首先int类型32个位(1个符号位+31个数值位) char类型16个位(16个数值位)
char data = 97;这样的赋值是没有错误的 这是用ascii编码来给char赋值
楼主问题是从char到int的自动提升 在Java当中 一个较小数据类型是直接可以赋值给大数据类型的而且在参数传递的时候同理,你可以写这样一行代码:
    int data = 'a'; //或者:
    char c = 'e';
       int i = c;//这样的赋值也没有错误
所以Java当中在参数匹配的时候是可以用char类型参数匹配int类型参数的定义的
s1.indexOf('e')等价于s1.indexOf(101) 在这里用e的ASCII编码来匹配int类型参数

另外,当你把一个方法定义成double类型参数的时候 byte short char int long float 类型的变量都可以匹配这个方法的参数,你可以试试看....

评分

参与人数 2技术分 +1 黑马币 +1 收起 理由
admin + 1
李林轩 + 1

查看全部评分

回复 使用道具 举报
  这个是每种语言对于引号的规则不同,javascript对于单双引号,一样处理;php虽然单双引号都表示字符串,但处理不同(双引号里面的经编译器解释,处理转义,单引号不)。说到JAVA了,双引号表示字符串,单引号表示单个字符。
  如:String s='abc'; 编译出错,在某些语言是行的;String s='a';也报错“不兼容的类型”,因JAVA是强类型语言,要检查类型。char ch='a'; String s="abc"; 才是对的。

评分

参与人数 2技术分 +1 黑马币 +1 收起 理由
admin + 1
李林轩 + 1

查看全部评分

回复 使用道具 举报
测试java对单引号的处理
  1. public class Test{       
  2.         public static void main(String[] args){
  3.                 char ch1='a';
  4.                 char ch2=97;
  5.                 String s="abc";               
  6.                 System.out.println(ch1);
  7.                 System.out.println(ch2);
  8.                 System.out.println(ch2==ch1);
  9.                 System.out.println(s.indexOf('a'));               
  10.                 System.out.println(s.indexOf(97));               
  11.         }
  12. }
复制代码
可见,对于JVAA,'a'即是97,97就是'a',当然类型不同,但多数时候java会自动转换。

评分

参与人数 1黑马币 +1 收起 理由
李林轩 + 1

查看全部评分

回复 使用道具 举报
王杰 黑马帝 2012-1-8 12:02:13
7#
本帖最后由 苳眠 于 2012-1-8 12:02 编辑

indexOf(int ch)中的ch用int类型是因为传进去的参数是ASCII码,
ASCII码是一种编码方式.他编码了所有的大小写字母,数字和常用的符号.小写的a的ASCII码是97;大写的A的ASCII码是65.
这个还是有些规律的比如知道a的编码是97,那么b的编码就是98.....以此类推.

评分

参与人数 2技术分 +1 黑马币 +1 收起 理由
admin + 1
李林轩 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马