Java 模取什么变量类型?

Java 模取什么变量类型?,java,modulo,Java,Modulo,“%”后面的模中默认变量类型是什么 这意味着,java是否可能将变量3的类型从long更改为int?简短回答-不会-它会告诉您发生了精度损失!因为Java是一种强类型语言(如果需要,我愿意对此进行更正),所以您需要显式地维护LVALU和RVALUE的类型。使用如下所示: (这些不是代码行-只是解释) 其他任何东西都在失去精度。此外,使用模%符号时的左值rvlaue排列也很重要 long只是将范围从32位扩展到64位。这就是为什么在不平衡左值和右值(关于“=”运算符和%运算符)的情况下混合它们时,

“%”后面的模中默认变量类型是什么


这意味着,java是否可能将变量3的类型从long更改为int?

简短回答-不会-它会告诉您发生了精度损失!因为Java是一种强类型语言(如果需要,我愿意对此进行更正),所以您需要显式地维护LVALU和RVALUE的类型。使用如下所示:

(这些不是代码行-只是解释)

其他任何东西都在失去精度。此外,使用模%符号时的左值rvlaue排列也很重要


long
只是将范围从32位扩展到64位。这就是为什么在不平衡
左值
右值
(关于“=”运算符和%运算符)的情况下混合它们时,编译器遵从性会降低。对于您的情况,除非您正在执行特定的位操作,否则不要不必要地使用
long
。我建议尽可能使用短裤(如果您需要32位大小的东西,请使用
int

@MartinPlávek乐意帮忙:)。如果你也读到这篇文章,可能会对你有所帮助-
variable1 = variable2 % variable3;
int res = int var1 % int var2;  // res as modulo of var1 and var2 (all int, no loss)


long res = int var1 % int var2; /* res as modulo of var1 and var2 (res size is bigger, 
                                * no loss) */

long res = long var1 % int var2; /* res as module of var1 and var2 (the divider is 
                                 * smaller size than dividend and quotient, so no
                                 * problem */