`

Java解惑--整数类型深入

    博客分类:
  • Java
阅读更多
问题1、
public class LongDivision{ 
  public static void main(String args[]){ 
    final long MICROS_PER_DAY = 24 * 60 * 60 * 1000 * 1000; 
    final long MILLIS_PER_DAY = 24 * 60 * 60 * 1000; 
    System.out.println(MICROS_PER_DAY/MILLIS_PER_DAY); 
  } 
} 

输出:5
如想打出预期结果1000,则需做如下处理:
public class LongDivision{ 
  public static void main(String args[ ]){ 
    final long MICROS_PER_DAY = 24L * 60 * 60 * 1000 * 1000; 
    final long MILLIS_PER_DAY = 24L * 60 * 60 * 1000; 
    System.out.println(MICROS_PER_DAY/MILLIS_PER_DAY); 
  } 
}


问题2、
public class JoyOfHex{ 
  public static void main(String[] args){ 
    System.out.println( 
      Long.toHexString(0x100000000L + 0xcafebabe)); 
  } 
} 

输出:cafebabe
如想打出预期的1cafebabe,则需做如下处理:
public class JoyOfHex{ 
  public static void main(String[] args){ 
    System.out.println( 
      Long.toHexString(0x100000000L + 0xcafebabeL)); 
  } 
} 


问题3、
public class Multicast{ 
  public static void main (String[] args){ 
    System.out.println((int)(char)(byte) -1); 
  } 
} 

输出:65535
小记:有一条很简单的规则能够描述从较窄的整型转换成较宽的整型时的符号扩展行为:如果最初的数值类型是有符号的,那么就执行符号扩展;如果它是 char,那么不管它将要被转换成什么类型,都执行零扩展。了解这条规则可以使我们很容易地解决这个问题。 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics