【问题标题】:what is '^=' operator in java [duplicate]java中的'^='运算符是什么[重复]
【发布时间】:2020-05-22 05:57:09
【问题描述】:

我的代码如下:

char ch = t.charAt(t.length() - 1);
        // result of XOR of two char is Integer.
        for(int i = 0; i < s.length(); i++){
            ch = ch^s.charAt(i);
            ch = ch^t.charAt(i);
        }

        return ch;

报错

第 6 行:错误:不兼容的类型:从 int 到 char 的可能有损转换 ch = ch^s.charAt(i);

第 7 行:错误:不兼容的类型:从 int 到 char 的可能有损转换 ch = ch^t.charAt(i);

2 个错误

但是,当我改变时

ch = ch^s.charAt(i);
ch = ch^t.charAt(i);

ch ^= s.charAt(i);
ch ^= t.charAt(i);

然后,我的代码就可以工作了。

'^=' 和 '* = ^' 有区别吗?为什么我搜索这个关于'^='的问题,它说它们是一样的??

What is the '^=' operator?

【问题讨论】:

    标签: java bitwise-xor


    【解决方案1】:

    从功能上看,它们是相同的:都执行异或。

    但是数据类型不同:

    【讨论】:

    • 问题:这与 int x; int y;x = x / y;x /= y; 相同吗?您不知道该值是十进制一(并被截断)还是整数(基于输入的值)?例如。 x = 3, y = 2.
    • @Joel 对于整数,结果始终是整数。如果你想避免这种情况,你必须在除法之前乘以 1.0(或加 0.0),或者进行转换。
    • 是的,正如我在问题中提到的那样,它将被截断。但是,我想知道这个概念是否相同?它强制 LH 值的类型?
    • @Joel 是的。我添加了指向 Java 语言规范相关部分的链接。
    【解决方案2】:

    您需要将ch 声明为int,或将按位异或^= 的结果存储在int 字段中。现在它正试图将它存储在错误的来源char 中。

    【讨论】:

      猜你喜欢
      • 2012-06-15
      • 2013-06-27
      • 2011-04-02
      • 2021-12-20
      • 2011-08-25
      • 2021-04-14
      • 1970-01-01
      • 2013-12-02
      • 2012-11-21
      相关资源
      最近更新 更多