相关疑难解决方法(0)

Java中的原始强制转换和赋值

我理解为什么以下是错误的:

byte a = 3; 
byte b = 8; 
byte c = a + b;  // compile error
Run Code Online (Sandbox Code Playgroud)

它不会编译.表达式总是导致int.所以我们应该做了明确的演员:

byte c = (byte) (a + b);   // valid code
Run Code Online (Sandbox Code Playgroud)

我不明白为什么以下是正确的:

byte d = 3 + 8;   // it's valid! why?
Run Code Online (Sandbox Code Playgroud)

因为字面整数(例如3或8)总是隐式的int.并且int-or-smaller表达式也总是导致int.谁能解释一下这里发生了什么?

我唯一可以猜到的是编译器将此表达式等同于以下内容:

byte d = 11;
Run Code Online (Sandbox Code Playgroud)

并不认为这是一个表达.

java

45
推荐指数
2
解决办法
2159
查看次数

标签 统计

java ×1