java - System.out.print() 中打印的常量的默认数据类型;

标签 java

System.out.println(2147483647 + 1); //prints -2147483648

我知道2147483647是整数数据类型的最大值。我的问题是为什么这个结果是针对 Integer 类型计算的,为什么不考虑 Long 或 double 类型?

因为...

System.out.println(127+1);  //prints 128

这里为什么不考虑 127 作为 Byte 数据类型,导致结果为 -128?

最佳答案

从根本上来说,你似乎没有完全理解literals 。没有小数点或后缀的数字始终是 int,无论其大小如何。 implicit widening 会使这变得更加复杂。当分配给更大的原始数据类型时(例如int可能会隐式扩展为long)。

现在我们知道你的两个文字是intint + int 始终为 int。结果是否溢出并不重要。

如果您知道或怀疑常量会超出int的范围,请添加后缀L(即2147483647L 1L) 来显式声明这些是长整型。 long + long = long,因此在这种情况下结果不会溢出。

关于java - System.out.print() 中打印的常量的默认数据类型;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50737370/

相关文章:

java - 如何按原样从 DOCX 获取所有文本

java - 如何将 Joda-Time DateTime 转换为 java.util.Date ,反之亦然?

java - 可以阻止 Eclipse 自动打开新文件吗?

java - 失去 spring security 记住我重定向后的子域 cookie

java - Java 中的字符运算

java - Struts2 JQuery onchange ajax 怎么做

java - 使用 BouncyCaSTLe (java) 和 Gcrypt (C) 加密给出不同的结果

JAVA支持平台 "Dependent"的概念?

java - 在 ECLIPSE 中运行并发 Java NIO 服务器 (Netty) 时,Java 运行时环境检测到 fatal error

java - 在 Clojure 中捕获系统/输出