相关疑难解决方法(0)

由于java语言规则或jvm,是否将字节转换为int?

byte a = 1;
byte b = 1;
byte c = a + b;
Run Code Online (Sandbox Code Playgroud)

引发错误:可能会损失精度

byte subt = a_s - a_b;
                ^
  required: byte
  found:    int
Run Code Online (Sandbox Code Playgroud)

这种行为是与jvm有关还是在java语言中定义的.

编辑:如果它是用java语言定义然后这样做是因为记住jvm?

表示如果java支持byte数据类型,那么为什么会operation on byte产生结果int

java byte operation type-conversion type-promotion

13
推荐指数
3
解决办法
1万
查看次数

为什么7/3不总是int?为什么它可以分配到字节或短,而x/3不能?

我认为任何算术表达式的结果至少是一个int.7/3是一个表达式 - 它有一个运算符(除法).

但为什么编译好呢?

byte b1 = 7 / 3;     // 7/3 is not a literal?
short b2 = 7 / 3;    // 7/3 is not a literal?
char b3 = 7 / 3;     // 7/3 is not a literal?
Run Code Online (Sandbox Code Playgroud)

和f1()编译好吗?

byte f1() {
    return 7 / 3;    // Why is it allowed?  Why isn't 7 / 3 an int ?
}

byte f2(int x) {
    return x / 3;   // c.ERR - type mismatch
}

byte f3(byte x) { …
Run Code Online (Sandbox Code Playgroud)

java

4
推荐指数
1
解决办法
177
查看次数

标签 统计

java ×2

byte ×1

operation ×1

type-conversion ×1

type-promotion ×1