【发布时间】:2018-03-01 13:50:36
【问题描述】:
我知道 Java 中的数字文字默认为 int 类型。 所以下面例子中的 5 实际上是一个 int,只要我不在它后面写一个 'L'。那么,如果 5 和 7 都是 int 类型,为什么我不能将 a*b 的结果分配回一个 int 变量呢?
long a = 5;
int b = 7;
int c = a * b;
我不明白为什么 Java 长时间看到这样的东西会出现问题:
long a = 345236577970;
但如果表达式包含一个 long 变量,即使它的类型实际上是 int,它仍然会执行类型转换。超级基础的初学者问题,对不起。
【问题讨论】:
-
“即使它的类型实际上是 int” - 类型 不是
int。表达式a * b的类型是long。仅仅因为 you 可以看到这里的值并不意味着 Java 编译器将其视为int范围内的常量表达式。
标签: java casting integer int long-integer