Java运算符

一、算术运算符
1 . ++ :表示自增
        在前:先运算,再取值。
    int a = 1;
    int b = ++a;
    //最后 a = 2; b = 2;
        在后:先取值,在运算。
    int a = 1;
    int b = ++a;
    //最后 a = 2; b = 1;
2 . -- :表示自减,跟++一样。
3 . /  :除法与数学不太相同,当除数被除数都是整数时,商的小数会被去除。
    double d = 10 / 4;
    double d2 = 10.0 / 4;
    //d的值为2.0,因为10和4都是整数,相除之后也是整数,2.5变成2,然后赋值double为2.0;
    //d2的值为2.5
4 . % :取模,在Java中取模的本质为:a % b => a - (int)a / b * b
    10 % 3;//结果为1,很显然
    -10 % 3;//结果为-1,等价于 -10 - (-10)/ 3 * 3 = -10 - (-3) * 3 = -1;
    10 % -3;//结果为1,等价于 10 - 10/ (-3) * (-3) = 10 - (-3) * (-3) = 1;
    -10 % -3;//结果为-1,等价于 -10 - (-10)/(-3)*(-3)=-10 - 3 * (-3) = -1;
    -10.5 % 3;//结果为-1.5,等于 -10 - (int)(-10.5)/3*3= -10.5 - (-10)/3*3 = -10.5 + 9 = -1.5
5 .i = i++;
    int i = 1;
    i = i++; //规则为使用临时变量:(1) temp = i;(2)i = i + 1;(3)i = temp; 所以i = 1 => i = 2 => i = 1;
    System.out.println(i);
6 .i = ++i;
    int i = 1;
    i = ++i; //规则为使用临时变量:(1)i = i + 1;(2) temp = i;(3)i = temp; 所以i = 2 => i = 2 ;
    System.out.println(i);
二、关系运算符
    关系运算符都是返回布尔类型的值,包括 > < == >= <=...,只记录不熟悉的
1 .instanceof:
    instanceof是Java中的二元运算符,左边是对象,右边是类;
    当对象是右边类或子类所创建对象时,返回true;否则,返回false。
这里说明下:
    类的实例包含本身的实例,以及所有直接或间接子类的实例
    instanceof左边显式声明的类型与右边操作元必须是同种类或存在继承关系,也就是说需要位于同一个继承树,否则会编译错误。
三、逻辑运算符
    用于连接多个条件(多个关系表达式),最终结果也是布尔值。
1 .逻辑与& 和  短路与&&:
    都是两个条件的都为真时,才为真。
    开发中,基本上都是使用短路与&&。
    a && b;
    a & b;
    //当 a 为 false 时,短路与&&不会判断 b 的真假,直接返回假,而逻辑与&还会判断 b 的真假。
    例如:
    int a = 4;
    int b = 5;
    if(a < 3 && ++b <50){
        System.out.println("OK");
    }
    System.out.println("b=" + b);
        //输出b = 5。因为短路与&&第一个为false的话,不会向后执行第二个条件。
       int a = 4;
    int b = 5;
    if(a < 3 & ++b <50){
        System.out.println("OK");
    }
    System.out.println("b=" + b);
    //输出b = 6。因为逻辑与&第一个为false的话,还会向后执行第二个条件。
2 .逻辑或| 和  短路或||:
    有一个为真则为真,都为假才假。
    区别跟1.中类似,当第一个条件为真时,短路或|| 不会判断第二个条件真假,而逻辑或| 还会判断。
3 .逻辑非!:
    取反,条件为真返回假,条件为假返回真。
4 .逻辑异或^:
    a ^ b : 逻辑异或,当a和b不同时,结果为true,否则为false。
四、赋值运算符
    将某个运算后的值,赋给某个变量。
1 .基本赋值运算符:=
2 .复合赋值运算符:+=,-=,*=,/=,%=。例:a += b; => a = a + b;
3 .运算顺序是 从右向左,即先运算赋值运算符右边的值,再赋值给左边。
4 .赋值运算符左边只能是变量,右边可以是变量,表达式,常量值。
5 . 赋值运算符会进行类型转换
    byte b = 2;
    b += 1;//看似等价于b = b + 1;此时,b会被转化成int类型,等式右边是int类型,将int转换为byte会报错。实际等价于 b = (byte)(b+1);
    b++;//等价于b = (byte)(b+1);
⭐五、三元运算符
    基本语法:    条件表达式 ? 表达式1 :表达式2
    条件表达式为true,运算后结果是表达式1;
    条件表达式为false,运算后结果是表达式2;
细节:
当你使用三元运算符,两边的操作数的类型不一致的时候,这就涉及到三元操作符的转换规则:
    1.若果两个操作数不可转换,则不做转换,返回值为Object类型。
    2.若两个操作数是明确类型的表达式(比如变量),则按照正常的二进制数字来转换。int类型转换为long类型,long类型转换成float类型。
    3.若两个操作数中有一个是数字S,另外一个是表达式,且其类型为T,那么,若数字S在T的范围内,则转换为T类型;若S超过了T的范围,则T转换为S类型。
    4.若两个操作数字都是直接数字。则返回值类型为范围较大者。
六、运算符优先级
  • 21
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值