运算符详解

运算符   

        对变量和常量进行操作的符号

        常用分类:

        {算术运算符        赋值运算符        比较运算符        逻辑运算符        三目运算符        位运算符               移位运算符}

        算术运算符:

        {+ - * / %}

        

    System.out.println(10/3);//3
	System.out.println(-10/3);//-3
	System.out.println(10/-3);//-3
	System.out.println(-10/-3);//3

	System.out.println(10%3);//1
	System.out.println(-10%3);//-1
	System.out.println(10%-3);//1
	System.out.println(-10%-3);//-1

	System.out.println(11.5%2);//1.5

	System.out.println(10/0);
	//报错:Exception in thread "main" java.lang.ArithmeticException: / by zero

        算数异常 除数不能是0

        都是二元运算符 使用时必须要有左右两个操作数

        int/int结果还是int

        做除法和取模时 右操作数不能为0

        %不仅可以对整型取模 也可以对double类型取模 但是没有意义 一般是对整型取模

        两侧操作数类型不一致时 向类型大的提升

        赋值运算符:

        {= += -= *= /= %=}

        

    int a = 1;
    a += 1;//	a = a + 1

    long a = 10;
    int b = 2;
    b = b + a;//报错 此时b提升为8字节 大转小 需要强转
    b += a;//不报错 增量运算符帮我们进行类型转换

        自增自减:

        {a++ ++a a-- --a}

                单独使用时 前置后置没有区别

                混合使用时

                前置 先加减后运算

                后置 先运算再加减

                只有变量才可以使用自增自减运算符 常量不能使用 常量值不允许修改

        

        比较运算符:

        {> < >= <= != ==}

        计算结果均为boolean类型

    //{计算结果是true或false}

    int a = 10;
    int b = 20;
    System.out.println(a==b);//false
    System.out.println(a!=b);//true
    System.out.println(a>=b);//false
    System.out.println(a<=b);//true
    System.out.println(a>b);//false
    System.out.println(a<b);//true

        不能写 a < b < 5 //相当于 true < 5 不能比较大小

        a < b != false //true

        判断相等要 ==

        逻辑运算符:     

                {&& || !}

                {运算结果是boolean类型}

                

                逻辑与&&

                语法 表达式1&&表达式2

                左右表达式必须是boolean类型的结果

                全真为真

                若表达式1为假 表达式2不执行

                逻辑或||

                语法 表达式1||表达式2

                有真为真

                若表达式1为真 表达式2不执行

                逻辑非!

                语法 !表达式

                真变假 假变真

                短路求值

                &&和||遵循短路求值的规则

                &和|不能满足短路求值的规则

        

        

        三目运算符:

                语法:数据类型 变量名 = boolean表达式1?表达式2:表达式3

                

                表达式1?表达式2:表达式3

                表达式1为true 整个表达式的值为表达式2的值

                表达式1为false 整个表达式的值为表达式3的值

                是Java中唯一的一个三目运算符 是条件判断语句的简化写法

    //求a b中较大的值是
    int a = 10;
    int b = 20;
    int max = a > b ? a  : b;//返回b的值
    //注意 表达式2和表达式3的结果要是同类型的 除非能发生类型隐式类型转换

    boolean flg = true == true ? false : true == true ? true : false;  //false
    (套娃)

        位运算符: 

        {& | ~ ^}

        {除~是一元运算符外 其余都是二元运算符}

        位操作表示按二进制运算 计算机中使用二进制来表示数据(01构成的序列),位运算符就是按照二进制位的每一位依次进行计算

                按位与&

                如果两个二进制位都是1,结果为1,否则结果为0

                按位或|

                如果两个二进制位上有1,结果为1,否则结果为0

  

                按位异或^

                不一样的位 进行或操作 不一样的为1 一样的为0

                按位取反~

                1改为0 0改为1

             

        移位运算符

                {<< >> >>>}

                {了解即可}

                14   0000 1110

                左移 14<<1 => 0001 1100 28

                统一在右边补0

                m左移n位 相当于m*2^n

                右移 14>>1 => 0000 0111 7

                统一在左边补符号位(符号位是1就补1 是0就补0)

                m右移n位 相当于m/2^n

                无符号右移 不管左边符号位是1还是0 统一补0

                -1 1111 1111 => 无符号右移 0111 1111 >>>

                没有无符号左移 符号在最左边

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值