java基础(第四期)

逻辑运算符,位运算符

位运算符

A =0011 1100

B =0000 1101

与 A&B = 0000 1100 二进制数同位比较,只有都为1是才为1,其他都为0

或 A|B = 0011 1101 只有同为0是才为0,其余都是1

非 A^B = 0011 0001 相同时为0,不同时为1

取反 ~B = 1111 0010

常见面试题

2乘8怎么运算最快 2乘8 =16这都知道篇很简单,但计算机不知道呀,计算机可以进行 2乘2乘2乘2,

这对计算机来说是不是很麻烦呐,要是位运算就简单多了,我们可以试一下 System.out.println(2<<3); 也输出的是16。

这种运算效率极高!直接跟底层打交道的

<< 左移 相当于乘2

<<右移              /2

学了无数次忘了无数次的进制

0000 0000 0

0000 0001 1

0000 0010 2

0000 0011 3

0000 0100 4

0000 1000 8

0001 0000 16

 

package operator;
​
import java.sql.SQLOutput;
​
//位运算符
public class Demo06 {
   public static void main(String[] args) {
       System.out.println(2<<3);
       System.out.println(8<<1);
       //输出同样的结果
  }
}

逻辑运算符

与(and) 或(or) 非(取反)

  • 与 && 两个变量都为真结果才为true

  • 或 || 两个变量有一个为真结果为true

  • 非 ! 如果是真则为假,如果是假则为真

package operator;
//逻辑运算符
public class Demo05 {
   public static void main(String[] args) {
       boolean a = true;
       boolean b = false;
​
       System.out.println("a && b:"+(a&&b));//
       System.out.println("a || b:"+(a||b));//
       System.out.println("!(a && b):"+!(a&&b));//
​
     

短路问题

都知道c<4是错误的,该情况下C++就不会执行,这就是短路问题

        int c = 5;
       boolean d = (c<4)&&(c++<4);
       //希望有朝一日掌握这种实验思维
       System.out.println(c);
       System.out.println(d);

 

三元运算符及小结

a+=b为a=a+b a-=b为a=a-b

        int a = 10;
       int b = 20;
       a+=b;//a=a+b
       a-=b;//a=a-b
       System.out.println(a);

输出结果

10
30

字符串连接类型 "+" 在+两侧只要有一方出现了String类型,

就会把其他类型都转换成 String类型在进行连接

System.out.println(a+b);
System.out.println(""+a+b);

输出结果

30
1020

空在前面输出连接,空在后无影响

System.out.println(""+a+b);
System.out.println(a+b+"");

输出结果

1020
30

三元运算符

x ? y : z //如果x==true,则结果为y,否则结果为z

int score=80;
String type = score<60 ? "不及格":"及格";//必须掌握
System.out.println(type);

输出结果

及格

能简洁代码和提高效率,必须掌握,建议多多练习

多多重复,百炼成钢

posted @ 2021-03-02 19:49  一颗秃头  阅读(92)  评论(0)    收藏  举报