黑马程序员技术交流社区

标题: 有关数值多重转型的问题! [打印本页]

作者: 孔斌    时间: 2013-1-28 12:34
标题: 有关数值多重转型的问题!
  1. public class Test1 {

  2.         /**
  3.          * 有关多重转型的问题
  4.          */
  5.         public static void main(String args[]){
  6.                 System.out.println((int)(char)(byte)-1);//65535
  7.         }
  8. }
复制代码
第一次转型是32位转为8位,第二次是扩展到16位,最后又回来到32位,而打印结果是65535,这是为什么呢?难道是组成原理里面的数值部分?

作者: 打工人    时间: 2013-1-28 14:03
窄的整型转换成较宽的整型时符号扩展规则:如果最初的数值类型是有符号的,那么就执行符号扩展(即如果符号位为1,则扩展为1,如果为零,则扩展为0);如果它是char,那么不管它将要被提升成什么类型,都执行零扩展。


作者: 孔斌    时间: 2013-1-28 14:10
谢谢老师!!
作者: 打工人    时间: 2013-1-28 14:12
孔斌 发表于 2013-1-28 14:10
谢谢老师!!

:L同学。。我不是老师。。。咱都是同学! 这个题出自java解惑吧
作者: 孔斌    时间: 2013-1-28 14:18
{:soso_e179:},这个是我做的一道笔试题呢!




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