Java中'^='运算符是什么?

3

我的代码如下:

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

接下来,我的代码可以工作。

'^='和'*=^'是不同的吗?当我搜索这个问题时,它说它们是相同的?

'^='运算符是什么?

2个回答

8

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

但数据类型不同:


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

0
你需要声明ch为一个int,或者将按位异或的结果^=存储在一个int字段中。现在它正在尝试将其存储在一个char中,这就是错误的来源。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接