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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© fxing 中级黑马   /  2015-1-5 09:14  /  675 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

听视频的时候有如下代码,将60转换为16进制,但结果不是3c,而是3 67,强转的原因,我想问:强转是永远由低向高转,还是和谁运算就就自动变成谁,自动转换高低顺序和规则是什么?比如int 和double 运算,结果是double,那么char 和int 呢?
class OperateDemo3
        {
                public static void main (String[] args)
                {
                        int num=60;
                        //获取60的最低4位,通过&15
                        int n1=num & 15;
                        System.out.println(n1>9?(char)(n1-10+'A'):n1);
                       
                        //要获取下一组四位,将60右移4位。
                        int temp =60 >>>4;//负数>>最高位补1;
                        int n2 =temp & 15;
                        System.out.println(n2>9?(char)(n2-10+'A'):n2);
                        //结果不完整,没有学if,强转有问题。
                       
                       
                       
                }
        }

1 个回复

倒序浏览
我刚才运行了一下代码,结果还真是67,不过,你要是在整体打印之前再加上char转换就行了,因为中间虽然转换了,但是中间的值还需要和两边进行运算,所以,又被强转了,至于你的问题,我觉得应该是和谁运算就被提升为哪个类型,想要得到自己的结果,则必须进行强转。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马