运算符

(一)算术运算符
      +        求和
      -        相减
      *        乘积
      /        商
      %        求余数(取模)
      
      ++    自加1
      --    自减1
      
      注意:
            一个表达式当中有多个运算符,运算符有优先级,不确定的加小括号,优先级得到提升

     

public class OperatorTest{
	
	public static void main(String[] args){
		
		int i = 10;
		int flag = i%2; 
		if(flag==0){
			System.out.println(i+"是偶数");
		}else{
			System.out.println(i+"是奇数");
		}
		
		//【自增/自减】
		int x = 99;
		x++;
		System.out.println(x);//100
		
		int y = 88;
		++y;
		System.out.println(y);//89
		
		/*
		①++出现在变量后:
			规则:先做赋值运算,再对变量中保存的值进行自加1
		②++出现在变量前:
			规则:先
			
		
		*/	
		int a = 100;
		int b = a++;
		System.out.println(a);//101
		System.out.println(b);//100
		
		int m = 20;
		int n =	++m;
		System.out.println(m);//21
		System.out.println(n);//21
		
		/*
		 println(k++)和println(++h)调用了源码:
		  public void println(int x) {
			synchronized (this) {
			print(x);
			newLine();
			}
		  }
		 调用了println(int x)的源码将k++和++h赋值给了x
		*/
		int k = 10;
		System.out.println(k++);//10
		int h = 10;
		System.out.println(++h);//11
		
	}
}

(二)、关系运算符
        >        大于
        >=        大于等于
        <        小于
        <=        小于等于
        ==        等于
        !=        不等于

        关系运算符的结果一定是布尔类型:true/false
(三)、逻辑运算符
    &        逻辑与【并且】(两边的算子都是true,结果才是true)
    |        逻辑或【或者】(两边的算子只要有一个是true,结果是true)
    !        逻辑非(取反,!false就是true,!true就是false,这是一个单目运算符)
    ^        逻辑异或(两边的算子只要不一样,结果就是true,一真一假)
    
    &&        短路与
    ||        短路或
    
    1、逻辑运算符要求两边的算子都是布尔类型,并且逻辑运算符最终的运算结果也是一个布尔类型
    2、短路与和逻辑与最终的运算结果是相同的,只不过短路与存在短路现象
    3、短路或和逻辑或最终的运算结果是相同的,只不过短路或存在短路现象
    4、什么情况下会发生短路现象呢?
        1)发生短路与的情况:
            第一个表达式执行结果为false,会发生短路与
        2)发生短路或的情况:
            第一个表达式执行结果为true,会发生短路或
    5、什么时候选择使用逻辑与运算符?什么时候选择使用短路与运算符?
        1)选择逻辑与的情况:
            在某些业务场景下,要求运算符两边的算子必须全部执行,使用逻辑与
        2)选择短路与的情况:
            短路与更智能,后面的表达式被短路可能不执行,所以执行效率较高,实际开发中使用较高

public class OperatorTest{

	public static void main(String[] args){
		
		int x = 10;
		int y = 8;
		//逻辑与
		System.out.println( x < y & ++x > y);//false
		System.out.println(x); //11
		//短路与
		int m = 100;
		int n =90;
		System.out.println( m < n && ++m > n);//false
		System.out.println(m);//100

	}
}

(四)赋值运算符    
        =,+=,-=,*=,/=,%=

public class OperatorTest{

	public static void main(String[] args){
		
		int a = 100;
		a %= 3;
		System.out.println("a取余运算后的结果为:"+'\t'+a);//a取余运算后的结果为:    1
	}
}

(五)字符串连接运算符    
        +
(六)位运算符
        &    按位与(AND)[真真为真,真假为假]
        |    按位或(OR)[假假为假,其余全真]
        ^    按位异[相同为假,不同为真]
        ~    按位非(NOT)[真则假,假则真]
        >>    右移
        >>>    右移,左边空出的位用0填充
        <<    左移

       

public class OperatorTest{
		
	public static void main(String[] args){
		
		int num1 = 1024;
		for(int i=0;i<=10;i++){
			int af_rigth_move = 0;
			af_rigth_move = num1>>i;
			System.out.println("num1右移第"+i+"次后的结果为:"+af_rigth_move+"="+"1024/(2^"+i+")");
		}
		/*
			num1右移第0次后的结果为:1024=1024/(2^0)
			num1右移第1次后的结果为:512=1024/(2^1)
			num1右移第2次后的结果为:256=1024/(2^2)
			num1右移第3次后的结果为:128=1024/(2^3)
			num1右移第4次后的结果为:64=1024/(2^4)
			num1右移第5次后的结果为:32=1024/(2^5)
			num1右移第6次后的结果为:16=1024/(2^6)
			num1右移第7次后的结果为:8=1024/(2^7)
			num1右移第8次后的结果为:4=1024/(2^8)
			num1右移第9次后的结果为:2=1024/(2^9)
			num1右移第10次后的结果为:1=1024/(2^10)

		*/
		int num2 = 1;
		for(int i=0;i<=10;i++){
			int af_rigth_move = 0;
			af_rigth_move = num2<<i;
			System.out.println("num左移第"+i+"次后的结果为:"+af_rigth_move+"="+"1*(2^"+i+")");
		}
		
		/*
			num左移第0次后的结果为:1=1*(2^0)
			num左移第1次后的结果为:2=1*(2^1)
			num左移第2次后的结果为:4=1*(2^2)
			num左移第3次后的结果为:8=1*(2^3)
			num左移第4次后的结果为:16=1*(2^4)
			num左移第5次后的结果为:32=1*(2^5)
			num左移第6次后的结果为:64=1*(2^6)
			num左移第7次后的结果为:128=1*(2^7)
			num左移第8次后的结果为:256=1*(2^8)
			num左移第9次后的结果为:512=1*(2^9)
			num左移第10次后的结果为:1024=1*(2^10)
		*/
	}
}

(七)条件运算符【又称三目运算符】
    
      1、语法规则:
              布尔表达式?表达式1:表达式2

public class Test{

	public static void main(String[] args){
		
		sex = false;
		char c = sex ? '男' : '女';
		System.out.println(c);
		
		
		/*
		语法错误,编译报错,结果可能是String,也可能是char,但是前边不能用char来接收数据
		类型不兼容
		sex = true;
		char c1 = sex ? '男' : '女';
		*/
		
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值