Java:将 long 转换为 int

标签 java int long-integer

假设变量 startstop 都是 long 类型变量。

int diff = (int) start-stop;

此代码产生错误类型不匹配:无法从 long 转换为 int,而

int diff = (int) (start-stop);

按预期运行。为什么?

最佳答案

因为在第一个中,(int)适用于start ,而不是表达式,如下所示:

int diff = ((int) start) - stop; // <== Your first expression clarified

然后减去 long从结果 int ,该表达式的结果是 long 。 (如果它有效,如果 start 的值太大而无法存储在 int 中,它可能会产生错误结果的副作用。)

首先进行减法并得到 long结果,然后将其转换为 int ,您可以将其存储在您的 int 中多变的。 (想必您知道它适合您的应用程序逻辑。)

关于Java:将 long 转换为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21075215/

相关文章:

java - 替换 long 的最后一位数字的最高效(也最安全)的方法是什么?

c++ - 使用 LONG DOUBLE, "9223372036854775807 - 1"仍然丢弃最后一位数字,结果为 "9223372036854775800"

c - 从字符串 C 中获取 int 值

java - 在 Java 中将两个 int 按位转换为 long 的最快方法是什么?

java - 使用递归的数字总和/数字根

java - 不幸的是,应用程序已停止,错误为零

c++ - 函数 stoi 未声明

java - ArrayIndexOutOfBoundsException、字符串、Int

java - 单击时创建的 JPanel 未出现

java - WebLogic 版本 12.2.1.1 及更高版本上的 "ClassNotFoundException: org.objectweb.asm.ClassVisitor"(文档 ID 2526226.1)