浏览 1691 次
锁定老帖子 主题:Java解惑--整数类型深入
精华帖 (0) :: 良好帖 (0) :: 新手帖 (10) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-05-18
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,那么不管它将要被转换成什么类型,都执行零扩展。了解这条规则可以使我们很容易地解决这个问题。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |