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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李敬 中级黑马   /  2012-8-21 11:51  /  1303 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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,这里什么意思,求解啊.
        }

}

3 个回复

倒序浏览
首先第一个问题:
  ”int i = 49;
                char ch = (char) i;
                System.out.println(ch);//这里为1“
你这样操作后,打印的是AscII表中第49位的字符为1,两者不要混,你可以直接查询AscII表
第二个问题:
  “System.out.println(+ch);//本来这里是忘写了" "的,却打印了49,这里什么意思,求解啊.”
你你本意是那样的,但是计算机看到“+ch”,会把它认为是“正数49”,那个加号就不是连接符了,而是正负号了,所以当然就打印49了
回复 使用道具 举报
第一个采用强制类型转换把int型转换为char型,那么输出就行49对应的char字符。后面一个就是编译器先遇到的是+,前面没有操作数。所以把“+”处理为一元运算符取正,而非二元运算符号加号或者字符串拼接。而取正的操作数是数字类型,故而char型又默认转换为int型。
回复 使用道具 举报
可以把+ch理解为一个表达式,包含一个一元运算符"+"

ch变量被自动提升为int  也就是+ch=(int)ch,所以'1'输出49
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马