Java 在System.out.print()中打印的常量的默认数据类型;
我知道2147483647是整数数据类型的最大值。我的问题是,为什么这个结果是针对整数类型计算的,为什么不考虑Long或double 因为Java 在System.out.print()中打印的常量的默认数据类型;,java,Java,我知道2147483647是整数数据类型的最大值。我的问题是,为什么这个结果是针对整数类型计算的,为什么不考虑Long或double 因为 System.out.println(2147483647 + 1); //prints -2147483648 在这里,为什么字节数据类型不考虑127,导致结果为-128?基本上,您似乎不完全理解。没有小数点或后缀的数字总是int,无论其大小。当分配给较大的基本数据类型时(例如,int可能隐式扩展为long),这可能会进一步复杂化 现在我们知道你的两个文
System.out.println(2147483647 + 1); //prints -2147483648
在这里,为什么字节数据类型不考虑127,导致结果为-128?基本上,您似乎不完全理解。没有小数点或后缀的数字总是
int
,无论其大小。当分配给较大的基本数据类型时(例如,int
可能隐式扩展为long
),这可能会进一步复杂化
现在我们知道你的两个文本是int
sint
+int
始终是int
。结果是否溢出无关紧要
如果您知道或怀疑常数将超出
int
的范围,请添加后缀L
(即2147483647L
和1L
)以明确声明这些是长的long
+long
=long
,因此在这种情况下结果不会溢出。基本上,您似乎没有完全理解。没有小数点或后缀的数字总是int
,无论其大小。当分配给较大的基本数据类型时(例如,int
可能隐式扩展为long
),这可能会进一步复杂化
现在我们知道你的两个文本是int
sint
+int
始终是int
。结果是否溢出无关紧要
如果您知道或怀疑常数将超出
int
的范围,请添加后缀L
(即2147483647L
和1L
)以明确声明这些是长的long
+long
=long
,因此在这种情况下结果不会溢出。println由多个输入重载,您的参数为int类型,因此将调用方法
System.out.println(127+1); //prints 128
println由多个输入重载,您的参数类型为int,因此将调用方法
System.out.println(127+1); //prints 128
默认情况下,java sorce代码中的每个数字都是整数。如果你想有一个像long这样的其他类型,你需要用一个“L”(例如23409L)来扩展你的号码,或者你必须转换它。只有在从变量初始化时,编译器才会为您进行转换 在许多情况下,您还可以为方法指定byte或short,即使它们请求整数参数。但这只适用于java的转换和升级机制 由于所有这些功能,一些程序员在代码的某一点上搞乱了实际的数据类型 有关更多信息,请访问oracle文档:
默认情况下,java sorce代码中的每个数字都是整数。如果你想有一个像long这样的其他类型,你需要用一个“L”(例如23409L)来扩展你的号码,或者你必须转换它。只有在从变量初始化时,编译器才会为您进行转换 在许多情况下,您还可以为方法指定byte或short,即使它们请求整数参数。但这只适用于java的转换和升级机制 由于所有这些功能,一些程序员在代码的某一点上搞乱了实际的数据类型 有关更多信息,请访问oracle文档: