逻辑运算符 | 描述 |
---|---|
& | 运算两端都是true,结果才是true,那么只要有任意一端false,结果为false |
&& | 一旦运算除左端为false,那么右端就不运算了 |
| | 运算两端任意一段为true,结果为true,只有两端都为false,结果为false |
|| | 一旦运算左端为true,结果就为true,都断不用计算 |
^ | 异或,按照对应二进制,按位异或比如3^9为10,即0b0011^0b1001 = 0b1010=10 |
不看答案自己做
//题一
int x = 1,y = 1;
if(x++==2 & ++y==2)
{
x =7;
}
System.out.println("x="+x+",y="+y);
//题二
int x = 1,y = 1;
if(x++==2 && ++y==2)
{
x =7;
}
System.out.println("x="+x+",y="+y);
//题三
int x = 1,y = 1;
if(x++==1 | ++y==1)
{
x =7;
}
System.out.println("x="+x+",y="+y);
//题四
int x = 1,y = 1;
if(x++==1 || ++y==1)
{
x =7;
}
System.out.println("x="+x+",y="+y);
答案1
x=2,y=2
答案2
x=2,y=1
答案3
x=7,y=2
答案4
x=7,y=1
异或
利用结论:一个数被另一个数异或两次,还是原来,可以用来值交换
package com.jingfei.csdn;
public class Yihuo {
public static void main(String[] args) {
int a = 3;
int b = 9;
int c = a ^ b;
//0011
//1001
//1010 = 10
System.out.println(c);
System.out.println("-------------");
//利用异或交换a,b的值,不需要第三方变量
a = a^b;
b = a^b;//(a^b)^b = a ; 得b=a
a = a^b;//(a^b)^a; 得a = b;
System.out.println(a);
System.out.println(b);
}
}
10
-------------
9
3
-------------------------------------------
谢谢