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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张志东 黑马帝   /  2011-11-26 16:36  /  5166 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

        package day1;

        public class MainMethod {

                public static void main(String[] args) {
                        char ch = '5';
                        int i = ch;
                        System.out.println(i);

                }

        }
-----------------------------------------------------------------------
          当我们运行上面一段小Demo的时候会发现输出的并不是我们想象中的数字5,为什么?因为在编码的时候ASC编码的时候整数和相对应的char字符正好相差48,那么在将char类型的数字转换成int类型的数字时只需要减去48就Ok了。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

4 个回复

倒序浏览
还可以把你的单引号去掉{:soso_e129:}

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
强子 黑马帝 2011-11-28 14:37:23
藤椅
Integer.parseInt(ch)
回复 使用道具 举报
输出铁定不是5      int i = ch;  把ch中保存的数据赋给i,  ch中保存这字符'5',对应的ascii编码是0x35   ,这时候就是把ch提升为int型,然后赋给i   ,
System.out.println(i);   因为i是int类型,所以方法调用Integer中的toString方法,输出i里保存的数字
而System.out.println(ch);  调用Character中的toString 方法,输出ch里保存数据所对应的字符




评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
数字5和字符5在内存中的表现形式是不一样的

我这里有解决方法:
public class Test
{

        public static void main(String[] args)
                {
                       
                        char ch = '5';
                        String s = String.valueOf(ch);
                        int i = Integer.parseInt(s);
                        System.out.println(i);

                }
}

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

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