java中关于三目运算符的问题

java中常用的三目运算符,大家都知道

 int a = 10;
 char b = 'x';
 System.out.println(false?10:b);//结果为x
 System.out.println(false?a:b);//结果为120

可是在看IO流源码时发现了这个:

public synchronized int read() {
        return (pos < count) ? (buf[pos++] & 0xff) : -1;
}

关于类型转换的时间就成了问题。

byte a = -1;
int b;
int e;
b = (true)?(a&0xff):-1;// b = 255
e = (true)?a:-1;  // e = -1

我很奇怪a被转型(int)的时间

你可能感兴趣的:(java中关于三目运算符的问题)