【问题标题】:Java casting from int to char acting weirdJava从int转换为char的行为很奇怪
【发布时间】:2014-10-20 20:32:39
【问题描述】:

我正在尝试将异或整数转换为字符。如果我只转换一个 int 它会转换为一个正确的字符。但是,如果我对两个字符进行异或并转换它们的结果,我会得到整数值。为什么?

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);
    }
}

【问题讨论】:

    标签: java casting


    【解决方案1】:

    它首先将 244 转换为字符,然后尝试与 128 进行异或,这相当于您的第三个打印语句。

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

    【讨论】:

      【解决方案2】:

      因为Operator Precedence

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 2021-05-03
          • 1970-01-01
          • 2017-07-10
          • 1970-01-01
          • 1970-01-01
          • 2010-10-24
          • 2012-06-25
          • 1970-01-01
          • 2021-04-01
          相关资源
          最近更新 更多