黑马程序员技术交流社区

标题: 在学习中遇到一个问题求解释! [打印本页]

作者: ♫梦想起航♫    时间: 2013-10-25 18:06
标题: 在学习中遇到一个问题求解释!
各位大哥大姐前辈们,同学同路朋友们,是这样的:
    我在学习毕向东老师的java基础4-9 数组(十进制-->十六进制)中要到一个问题不明白,就是我在编译的时候编译器提示:
            ArrayTest5.java:29: 错误: 不可转换的类型
                                System.out.println((char)(temp-10+"A"));
                                                         ^
  需要: char
  找到:    String
1 个错误
   
然后我将"A"改成了'A'后编译和运行都正常了,我想知道这是为什么啊,为什么""会报错,而使用''却不报错呢?求解释。
作者: 1961993790    时间: 2013-10-25 18:15
这里首先指出的是temp-10+"A"加上字符串“A”之后
这里就把数值类型转换成立字符串,这里有一个自动转换机制
例如 int a=10;然后输出 System.out.println(a+“ ”)这里打印的
结果为一个字符串数值,所以你运行(char)(temp-10+"A");这条语句,编译时就
会出现类型转换错误Cannot cast from String to char(意思就是说:不能从字符串类型转换为字符类型)
希望对您有帮助!
作者: 费破的可    时间: 2013-10-25 18:18
你这里把结果强转成char类型的而char 表示一个unicode类型的字符双字节需要 用单引号括起来 所以要用'A'    而提示你找到String是因为String 表示一个字符串类变量。用来存放字符串,如 "abcdsddd",用引号括起来的是一个字符串
作者: wenbaoxing    时间: 2013-10-25 18:22
"A":是一个String类型

'A':是一个char类型
在java中这是两种不同的数据类型,
在第13天的视频中你会学习到String类
作者: ♫梦想起航♫    时间: 2013-10-25 18:23
1961993790 发表于 2013-10-25 18:15
这里首先指出的是temp-10+"A"加上字符串“A”之后
这里就把数值类型转换成立字符串,这里有一个自动转换机 ...

谢谢,现在明白了,一个是字符串一个是字符,这两个不是一路的,开始我自己认为字符和字符串的区别只是一个只能装一个字符一个却可以装很多字符,结果他们的区别不止这些。
作者: Jim-剣◆﹏    时间: 2013-10-25 23:32
看到这问题,脑子第一个想法就是,String类型是不可改变的,属于final型的,字符串常量,不能强转




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2