黑马程序员技术交流社区
标题:
【求助】关于强转提升的问题
[打印本页]
作者:
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