Java中的&=和| =

She*_*ari 2 java operators

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

//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;
Run Code Online (Sandbox Code Playgroud)

有人可以解释我到底&=|=手段?

我理解为,如果可以接受,那么也检查右侧并将操作的值(false/true)分配给可接受的,这样如果它是假的,那么它将不需要检查右侧.

Den*_*ret 9

就像

a += b;
Run Code Online (Sandbox Code Playgroud)

手段

a = a+b;
Run Code Online (Sandbox Code Playgroud)

, 你有

a &= b;
Run Code Online (Sandbox Code Playgroud)

含义

a = a&b;
Run Code Online (Sandbox Code Playgroud)

当然也是如此|=.

对于其语法继承自C语言的大多数语言中的其他运算符,您具有相同的构造.请看这个例子:Linux内核源代码中的">> ="是什么意思?

另请参阅java中的赋值运算符的完整列表.