一、运算符与表达式

  • (1)运算符分类:
  • 0.赋值运算符 =
  • 1.算数运算符 + - * / %
  • 2.比较运算符 < > == <= >= !=
  • 3.逻辑运算符 & | ! && ||
  • 4.位运算符 & | ~ << >> ^
  • 5.一元运算符 ++ – += -= *= /= %=
  • 6.二元运算符
  • 7.三元运算符 变量=条件?值1:值2;
  • (2)逻辑运算符 & | ! && || (与或非)
    注意:逻辑运算符左右两边所存放的变量或者表达式必须是布尔类型的
  • 运算公式:
    与:
    true 与 true = true
    true 与 false = false
    false 与 true = false
    false 与 false = false
    或:
    true 或 true = true
    true 或 false = true
    false 或 true = true
    false 或 false = false
  • &和&&的区别
  • &(单位与):不管‘与’符号左边的逻辑运算结果是真还是假,都会判断符号右边的结果,耗时。
  • &&(短路与):如果‘与’符号左边的结果为假,就不会再判断右边的运算结果,因为最终的结果已经确定,为假。
  • |和||的区别
  • |(单位或):不管‘或’符号左边的逻辑运算结果是真还是假,都会判断符号右边的结果,耗时。
  • ||(短路或):如果‘或’符号左边的结果为真,就不会再判断右边的运算结果,因为最终的结果已经确定,为真。
  • (3)位运算
  • 位运算符: & | ^ ~
  • & :每一位都是1,结果为1,否则为0
  • | :每一个都是0,结果为0,否则为1
  • ^ : 每一位的值相同,结果为0 ,否则为1
  • ~ : 每一位进行取反,0变1 ,1变0

二、下边附上代码:(读者可以进行相应的测试)

public class V3 {

	public static void main(String[] args) {
		// 运算符和表达式
		/*
		 * 算术运算符 :+ - * /  %
		 */
		
		int x = 25 , y = 20;
		System.out.println("a+b= " + (x+y));
		System.out.println("a-b= " + (x-y));
		System.out.println("a*b= " + (x*y));
		System.out.println("a/b= " + (x/y));
		System.out.println("a%b= " + (x%y));
		
		/*
		 * 赋值运算符:=  +=  /=  *=   -=
		 */
		
		System.out.println("x+=y: " + (x+=y));
		System.out.println("x-=y: " + (x-=y));
		System.out.println("x*=y: " + (x*=y));
		
		/*
		 * 关系运算符 : == ,!= ,< ,> ,<= ,>=
		 * 作用:关系判断,返回布尔值
		 * 
		 */
		x = 20;
		y = 10;
		System.out.println("x==y: " + (x==y));
		System.out.println("x!=y: " + (x!=y));
		System.out.println("x<y: " + (x<y));
		System.out.println("x>y: " + (x>y));
		
		/*
		 * 逻辑运算符:&& ,|| ,! ,与或非
		 * 返回布尔值
		 * 并且:只要表达式中有一个false,整个表达式就是false
		 */
		System.out.println("x==y && x!=y" + (x==y && x!=y));
		int a = 5;
		int b = 5;
		System.out.println("a==b && a!=b" + (a==b && a!=b));
		// 或:表达式中只要有一个是true,表达式的值就是 true
		System.out.println("a==b || a!=b" + (a==b || a!=b));
		
		//非:表示取反,表达式为真时,取非,就是false
		System.out.println("!(a==b): "+ !(a==b));
	    
		//结合使用: 优先级 : !高于 && 高于 ||
		System.out.println("(a==b && x>=y || !(a!=b)): " + (a==b && x>=y || !(a!=b)));
		
		/*
		 * 位运算符: & | ^ ~
		 */
		int c = 3;//二进制3:011
		int d = 5;//二进制5:101
		System.out.println("二进制c:" +Integer.toBinaryString(c));
		System.out.println("二进制d:" +Integer.toBinaryString(d));
		System.out.println("十进制结果:" + (c&d));
		System.out.println("十进制结果:" +(c|d));//先转化为二进制,然后比较
		System.out.println("十进制结果:" +(c^d));
		System.out.println("二进制~c:" +Integer.toBinaryString(~c));
		System.out.println("十进制结果:" +(~c));//按位取反
	}
	
	
	
}