运算符

算术运算符

+    -    *    /    %    ++    --

使用方式:单独使用 参与运算

当++,--出现在操作数的后面是,先传值再自加1/自减1

当++,--出现在操作数的前面是,先自加1/自减1再传值

//操作+
        int x=6;
        int y=3;
        /*System.out.println(x+y);//求和
        System.out.println('x'+y);//求和
        System.out.println("x"+'x');//字符串拼接*/

        //操作-
        /*System.out.println(y-x);
        double a=(1.9-1.8);
        System.out.println(a);//0.09999999999999987---小数没有精确运算*/

        //操作/
        //System.out.println(x/y);
        //ArithmeticException--算术异常
        //System.out.println(x/0);
        //Infinity--正无穷大   支持小数除以零
        //System.out.println(x*1.0/0);
        //NaN---不是一个数
        //System.out.println(0.0/0);
        //当小数参与运算时结果是小数
        //System.out.println(2.4/3);


        //操作%
	//%左边数据的正负决定了结果的正负
	/*System.out.println(a%b);
	System.out.println(-a%b);
	System.out.println(a%-b);
	System.out.println(-a%-b);*/


        //操作++、--
        int a=3;
        //int b=--a;//参与运算
        //System.out.println(a++);//单独使用
        //System.out.println(++a);//单独使用

        //byte、short、char做++/--时
        //底层会默认添加强制类型转换
        byte b1=127;
        b1++;
        short s=-32768;
        s--;
        System.out.println(s);

赋值运算符

把右边的值赋值给左边

扩展赋值运算符(底层默认强加类型转换)

扩展赋值运算符:+=、-=、*=、/=、%=、&=(按位与等)、|=(按位或等)、^=(按位异或等)、>>=(右移等)、<<=(左移等)、>>>=(无符号左右移等)

&=    例:a &= b        相当于a=a & b

|=    例:a |= b        相当于a=a | b

>>=   例:a >>= b       相当于a=a >> b

<<= 例:a <<= b       相当于a=a << b

^=   例:a ^= b       相当于a=a ^ b

//定义变量
		/*int a=3;
		int b=4;
		a+=b;//a=a+b;*/
		//
		/*byte b=2;
		//b=b+3;b+3为int类型
		b+=3;//b=b+3;底层默认添加强制类型转换
		System.out.println(b);*/


		//支持定义形式
		//int a=1,b=2,c=3;
		//不支持连等定义
		//int a=b=c=3;
		//支持连等赋值
		int a=3;
		//展开从右往左计算
		//b=3+=3-=3=3*5=15
		//b=3+=3=3-15=-12
		//b=3=3+(-12)=-9
		//int b=a+=a-=a*=5;

		//b=3+=3-=3*=3++
		//右边变量的值改变了不会影响左边已经编译好的值
		int b=a+=a-=a*=a++;
		System.out.println(b);//-9
		System.out.println(a);

关系(比较)运算符

==    <=    >=    !=    <    >

(结果值一定是布尔值)

        //操作==
        System.out.println(2==9);
        //操作<=
        System.out.println(2<=9);
        //操作!=
        System.out.println(3!=4);

逻辑运算符

用于连接左右俩边布尔值

&(逻辑与),|(逻辑或),^(逻辑异或),!(逻辑非),

&&(双与),||(双或)

总结:

1.&:遇见false则false

2.|:遇见true则true

3.^:相同则false,不同则true(吸铁石 同性相斥,异性相吸)

4.!:结果值取反(当出现偶数个数时结果不变)

&&(双与),||(双或)

&&和&运算规律一致,但是当&&左边出现false时,右边默认不执行---短路效果

||和|运算规律一致,但是当||左边出现true时,右边默认不执行---短路效果

||出现在&&的左边且||出现短路,就会把后面的内容以及&&一并短路掉

                //定义变量
		int a=1;
		int b=2;
		int c=3;

		//操作&
		System.out.println((a>b)&(b>c));//false&false  false
		System.out.println((a>b)&(b<c));//false&true  false
		System.out.println((a<b)&(b>c));//true&false  false
		System.out.println((a<b)&(b<c));//true&true   true

		
		
		//操作|
		System.out.println((a>b)|(b>c));//false|false false
		System.out.println((a>b)|(b<c));//false|true  true
		System.out.println((a<b)|(b>c));//true|false  true
		System.out.println((a<b)|(b<c));//true|true   true

		
		
		//操作^
		System.out.println((a>b)^(b>c));//false^false false
		System.out.println((a>b)^(b<c));//false^true  true
		System.out.println((a<b)^(b>c));//true^false  true
		System.out.println((a<b)^(b<c));//true^true   false

		

		System.out.println(!(!(b>c)));//true


		


		//操作&&
		//和逻辑与的运算规律一致
		System.out.println((a>b)&&(b>c));//false&&false  false
		System.out.println((a>b)&&(b<c));//false&&true  false
		System.out.println((a<b)&&(b>c));//true&&false  false
		System.out.println((a<b)&&(b<c));//true&& true   true



		
		//a=1 b=2 c=3
		//||出现在&&的左边且||出现短路
		//就会把后面的内容以及&&一并短路掉
		System.out.println((true)||(a++==b)&&(b>c--));
		System.out.println(a);//1
		System.out.println(c);//3

位运算符

数据转成二进制补码形式

 

&(按位与),|(按位或),^(按位异或),~(按位取反)

& : 遇0则0 任意整数&1==0 一定是偶数

任意整数&正数 一定是正数

| : 遇1则1 任意整数|0 一定是本身

任意整数|负数 一定是负数

^ : 相同则0不通则1 任意整数^0 一定是本身

扩展结论(当一个整数按位异或上另一个整数两次结果还是本身)

                //定义变量
		int a=2;
		int b=3;
		//操作&
		System.out.println(a&b);//2
		//操作|
		System.out.println(a|b);//3
		//操作^
		System.out.println(a^b);//1
		//操作~
		System.out.println(~a);//-3
		

/*

	00000000 00000000 00000000 00000010 int 2补码
	00000000 00000000 00000000 00000011 int 3补码


	//操作& 遇0则0 任意整数&1==0 一定是偶数
	//任意整数&正数 一定是正数
	00000000 00000000 00000000 00000010
	00000000 00000000 00000000 00000011
	------------------------------------
	00000000 00000000 00000000 00000010  2

	//操作| 遇1则1 任意整数|0  一定是本身
	//任意整数|负数 一定是负数
	00000000 00000000 00000000 00000010
	00000000 00000000 00000000 00000011
	-----------------------------------
    00000000 00000000 00000000 00000011  3

    //操作^ 相同则0不同则1 任意整数^0 一定是本身
    00000000 00000000 00000000 00000010
	00000000 00000000 00000000 00000011
	------------------------------------
	00000000 00000000 00000000 00000001  1

	//操作~
	//所有位按位取反
	00000000 00000000 00000000 00000010
	-----------------------------------
	11111111 11111111 11111111 11111101  负数 补码
	11111111 11111111 11111111 11111100  反码
	10000000 00000000 00000000 00000011  原码  -3
*/

>>(右移),<<(左移),>>>(无符号右移)

>>(右移):当正数进行右移时,右移几位就在最左位(最高位)补上几个0.当负数进行右移时就在最高位补上几个1.

<<(左移):无论正数负数进行左移时,左移几位就在最右位补上几个0.

>>>(无符号右移):无论正负数进行右移时,右移几位就在最高位补上几个0。

                int a=12;
		//操作>> a/2`移动位数
		System.out.println(a>>2);//3
		//操作<< a*2`移动位数
		System.out.println(a<<2);//48
		//操作>>>  结果一定是正数
		System.out.println(a>>>2);//3

三目(元)运算符(结果一定是一个值)

格式

    布尔表达式?表达式值1:表达式2;

流程

    先去计算出布尔表达式的值,如果是true返回表达式值1,如果是false返回表达式值2。

两个表达式的值的类型要小于等于接收值的类型

        //求两个数最大值
        int x=3;
        int y=4;
        int max=x>y?x:y;
        System.out.println(max);

        //求三个数最大值
        int a=1;
        int b=2;
        int c=3;
        System.out.println(a>b?(a>c?a:c):(b>c?b:c));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值