思考者zy  

逻辑运算符

与或非(&& ,||,!(&&))

package Operator;

public class 逻辑运算符 {
  public static void main(String[] args) {
      boolean a=true;
      boolean b=false;
      System.out.println("a&&b:"+(a&&b));//a与b,b为假,结果为假
      System.out.println("a||b:"+(a||b));//a或b,a为真,结果为真
      System.out.println("!(a&&b):"+!(a&&b));//非运算是取反与运算,结果为真
      //短路运算
      int c= 6;
      boolean d=(c<4)&&(c++<4);//与运算看第一个为true则执行下一句,为false则直接判定为false不执行下一句
      System.out.println(c);
      System.out.println(d);
  }
}

注意c=6,与运算,若头为false则不运算下一句,c&&d,若运算则输出c=7,但结果c=6,所以,没执行c++<4

位运算

& | ^ ~(与,或,异或,非)二进制有关

package Operator;

import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;

public class 位运算 {
  public static void main(String[] args) {
  /*
  a=0000 1111
  b=1111 0000
  a&b =0000 0000//与运算,针对二进制,若一位有0则都为0
  a|b =1111 1111//或运算,若一位有1,则都为一
  a^b =0000 0000//异或运算,若两者相同为1,反之则为0
  ~b =0000 1111//非运算,取反
  2*8=16//怎样运算最快,用<< >>,与二级制有关
  <<,
  0000 0000 0
  0000 0001 1
  0000 0010 2
  0000 0011 3
  0000 0100 4
  .....
  0001 0000 16
  << 意思*2
  >> 意思/2
  * */
      System.out.println(2<<3);
}

面试题

2*8=16,怎样运行最快?

用<<左推运算符,效率最高

意思是四个2相乘

2<<3=2* 2 *2 * 2=16

<<意思 *2 >>意思 /2

扩展运算符

+= 意思a+=b 为a=a+b

package Operator;

public class 扩展运算符 {
  public static void main(String[] args) {
      int a=10;
      int b=20;
      a+=b;//a=a+b
      System.out.println(a);
  }
}
//字符串连接符 +
System.out.println(""+a+b);//+号前有String类型的字符输出结果为10和20连接起来1020
System.out.println(a+b+"");//+号后有"",运算前面的操作

面试题,问(” ”+a+b)与(a+b+“ ”)区别

第一个字符串在前+号是一个字符串连接符结果应该是ab

第二个字符串在后,应该输出前面的运算a+b

三元运算符

条件运算符? :

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

 

posted on 2021-11-19 19:01  思考者zy  阅读(30)  评论(0编辑  收藏  举报