黑马程序员技术交流社区
标题:
数据类型转换的问题
[打印本页]
作者:
李敬
时间:
2012-8-21 11:51
标题:
数据类型转换的问题
public class IntToChar {
public static void main(String[] args) {
int i = 49;
char ch = (char) i;
System.out.println(ch);
//这里为1
System.out.println(+ch);
//本来这里是忘写了" "的,却打印了49,这里什么意思,求解啊.
}
}
作者:
黑马王建伟
时间:
2012-8-21 12:08
首先第一个问题:
”int i = 49;
char ch = (char) i;
System.out.println(ch);//这里为1“
你这样操作后,打印的是AscII表中第49位的字符为1,两者不要混,你可以直接查询AscII表
第二个问题:
“System.out.println(+ch);//本来这里是忘写了" "的,却打印了49,这里什么意思,求解啊.”
你你本意是那样的,但是计算机看到“+ch”,会把它认为是“正数49”,那个加号就不是连接符了,而是正负号了,所以当然就打印49了
作者:
胡进辉
时间:
2012-8-21 12:25
第一个采用强制类型转换把int型转换为char型,那么输出就行49对应的char字符。后面一个就是编译器先遇到的是+,前面没有操作数。所以把“+”处理为一元运算符取正,而非二元运算符号加号或者字符串拼接。而取正的操作数是数字类型,故而char型又默认转换为int型。
作者:
李知伦
时间:
2012-8-21 12:32
可以把+ch理解为一个表达式,包含一个一元运算符"+"
ch变量被自动提升为int 也就是+ch=(int)ch,所以'1'输出49
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2