在一个项目中,我看到以下代码:

//f is a File
boolean acceptable = true;
acceptable &= sweepFilename != null;
acceptable &= f.getName().equals(sweepFilename.toString()); // parsable
acceptable &= id == null || id.equals(sweepFilename.getId());
acceptable &= length == null || length.equals(sweepFilename.getLength());
acceptable &= f.getName().toLowerCase().endsWith(SweepFilename.EXTENSION);
acceptable |= f.isDirectory();
return acceptable;


有人可以解释&=|=的含义吗?

我的理解是,如果acceptable为true,那么还要检查右侧,并将操作的值(false / true)分配给acceptable,这样,如果为false,那么就不需要检查右侧。

最佳答案

就像

a += b;


手段

a = a+b;


, 你有

a &= b;


含义

a = a&b;


对于|=当然也一样。

对于大多数语法从C语言继承的语言,您都具有与其他运算符相同的构造。例如看:What does ">>=" mean in Linux kernel source code?

另请参见the complete list of assignment operators in java

10-07 13:27