黑马程序员技术交流社区

标题: 【求助】关于强转提升的问题 [打印本页]

作者: fxing    时间: 2015-1-5 09:14
标题: 【求助】关于强转提升的问题
听视频的时候有如下代码,将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,强转有问题。
                       
                       
                       
                }
        }
作者: 446111220    时间: 2015-1-5 10:47
我刚才运行了一下代码,结果还真是67,不过,你要是在整体打印之前再加上char转换就行了,因为中间虽然转换了,但是中间的值还需要和两边进行运算,所以,又被强转了,至于你的问题,我觉得应该是和谁运算就被提升为哪个类型,想要得到自己的结果,则必须进行强转。




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