字符上的二进制运算符会导致Java中的类型转换?

时间:2019-03-04 20:02:13

标签: java char type-conversion binary-operators

在处理bcd编号时,很多二进制运算符最近都表现出以下行为:

在对字符使用任何二进制运算符并将其分配回字符变量后,编译器将引发不兼容的类型错误:

public class Test {
    public static void main(String[] args) {
        char c = 0;
        char d = c & 0;
    }
}

输出:

Test.java:4: error: incompatible types: possible lossy conversion from 
int to char
        char d = c & 0;
                   ^
1 error

当编译器知道该值适合16位时,它可以正常工作-以下示例可以正常编译:

public class Test {
    public static void main(String[] args) {
        char d = 32767 & 0;
    }
}

(2 ^ 15以下的任何数字均可) 因此,显然,此处的字符被隐式转换为整数。 这种感觉对左移运算符有意义,但除此之外,它确实很烦人,对我没有任何意义。

为什么会发生这种情况?在什么情况下会有用?

0 个答案:

没有答案