学习编程第8天
逻辑运算符
        boolean a=true;
        boolean b=false;
        System.out.println("a && b:"+(a&&b));//与:两个变量都为真,结果才是true
        System.out.println("a || b:"+(a||b));//或:两个变量有一个为真,结果就是true
        System.out.println("!(a && b):"+!(a&&b));//非:如果是真,结果就是false,如果是假,结果就是true
结果是
短路运算
        boolean a=true;
        boolean b=false;
        System.out.println("a && b:"+(b&&a));
结果是
false
因为b已经是false了所以不运算后面的就直接输出结果“false”
        int c=5;
        boolean d=(c<4)&&(c++<8);
        System.out.println(d);
结果是false,尽管c++<8是true,但是因为c<4已经是false了且c<4在前,所以直接输出结果false
位运算
位运算中的逻辑运算:&,|,^,~
        /*
        A=0011 1100
        B=0000 1101
        A&B=0000 1100  (意思是A与B同一位上如果都是1,才是1,否则就是0)
        A|B=0011 1101  (意思是A与B同一位上如果有1,就是1,如果都是0,才是0)
        A^B=0011 0001  (意思是A与B同一位上如果相同,就是0,如果不相同,就是1)
        ~B =1111 0010  (取反,原本是0,结果就是1)
         */
怎样输出2*8最快?("<<",">>")
System.out.println(2<<3);
在二进制中0000 0010=2 0000 0100=4 0000 1000=8 0001 0000=16
"<<"意思是左移,相当于*2
">>"意思是右移,相当于/2
条件运算符
? :
x?y:z 意思是如果x==true,那么结果是y,否则结果是z
int score=80;
String type= score<60 ?"不及格":"及格";
System.out.println(type);//结果是"及格"
扩展赋值运算符
int a=10;
int b=20;
a+=b;//a=a+b
a-=b;//a=a-b
字符串连接符 +
int a=10;
int b=20;
System.out.println(a+b);
System.out.println(""+a+b);//如果+两侧有一侧是String类型的,
                           // 其他操作数都转换成String再进行连接
System.out.println(a+b+"");//如果字符串在后面,则先进行运算
结果分别是
30、1020、30
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号