&;=和|=在Java中
在项目中,我看到以下代码:&;=和|=在Java中,java,operators,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 &
//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,这样,如果acceptable为false,那么就不需要检查右侧。就像
a += b;
意味着
,你有
a &= b;
意义
a = a&b;
当然,|=
也是如此
对于语法继承自C语言的大多数语言中的其他运算符,都有相同的构造。看看这个例子:
另请参见。
+=
,-=
,*=
,&
,&=
,
和其他此类运算符在大多数语言中都只是a=b
和等效运算符的简写。由于&不是一个快捷运算符,它可能不如使用&>有效。如果你这样做了,它可能看起来像这样
return (sweepFilename != null
&& f.getName().equals(sweepFilename.toString())
&& (id == null || id.equals(sweepFilename.getId()))
&& (length == null || length.equals(sweepFilename.getLength()))
&& (f.getName().toLowerCase().endsWith(SweepFilename.EXTENSION)))
|| f.isDirectory();
语法
x&=y
相当于x=x&y
及
语法
x |=y
相当于x=x | y
“&”和“|”是位运算符。当与“=”运算符一起使用时,这些只是表示以下内容的快捷方式:
a&=b与a=a&b相同
现在,a&b的回报是什么?它返回逻辑“AND”,因此比较位。
至于布尔值(在Java中只是命名常量),它们分别表示0和1位(分别表示'false'和'true'
但您也可以将它们与其他整数类型(short、int、long)一起使用
x&=y代码>=x=x&y
和&
依次是按位And运算符。
return (sweepFilename != null
&& f.getName().equals(sweepFilename.toString())
&& (id == null || id.equals(sweepFilename.getId()))
&& (length == null || length.equals(sweepFilename.getLength()))
&& (f.getName().toLowerCase().endsWith(SweepFilename.EXTENSION)))
|| f.isDirectory();
boolean a = true;
boolean b = false;
a &= b; // it acts like && and || for boolean values
System.out.println(a); //false
int i = 2;
int j = 3;
System.out.println(Integer.toBinaryString(i));
System.out.println(Integer.toBinaryString(j));
System.out.println(i&=j); // prints binary '10' == 2 decimal
System.out.println(i|=j); // prints binary '11' == 3 decimal