Java从int转换为char表现得很奇怪

时间:2014-10-20 12:25:51

标签: java casting

我正在尝试将xored ints转换为chars。如果我只转换一个int,它会被转换为一个正确的char。但如果我xor两个字符并转换他们的结果我得到整数值。为什么呢?

public class ClassToTestSnippets {

    private static ClassToTestSnippets ctts;

    public static void main(String[] args) {
        ctts = new ClassToTestSnippets();
        ctts.testThisMethod();
    }

    public void testThisMethod() {
        System.out.println((char) 244^128);
        System.out.println((char) 116);
        System.out.println(244^128);
    }
}

3 个答案:

答案 0 :(得分:6)

它首先将244转换为字符然后尝试xor与128相当于你的第三个打印语句。

System.out.println((((char) 244) ^128));//this is how it interprets.
System.out.println((char) 116);
System.out.println(244^128);

答案 1 :(得分:6)

由于Operator Precedence

首先执行强制转换,然后int隐式强制转换为char

答案 2 :(得分:1)

您必须添加括号,以便XOR的结果而不仅仅是第一个参数将转换为char。

 System.out.println((char) (244^128));