Java运算符

算术运算符

加法运算:+
减法运算:-
乘法运算:*
除法运算:/
取模运算:%
package cn.ryjiaoyu.www.nuit2.operators;

import org.junit.Test;

/**
 * 算术运算符
 */
public class Demo {
    /**
     * 除法运算:
     * 在数学运算中,0作除数时没有任何意义
     * 但在Java程序中,对于整型数据的运算,它会出现 异常
     * 对于浮点型数据的运算,它会得到一个无穷大值或NaN(未定义或不可表示的值)
     */
    @Test
    public void m1() {
        System.out.println("123.0/0=" + 123.0 / 0);
        System.out.println("123/0=" + 123 / 0);
    }

    /**
     * 取模运算:即求余运算
     * 其操作数可以是浮点数,计算结果也将是浮点数
     */
    @Test
    public void m2() {
        System.out.println("123.5 mod 4=" + 123.5 % 4);
        System.out.println("123 mod 4=" + 123 % 4);
    }
}

注意:取模运算也会执行除法操作,因此对于整型数据来说,也不能使用0作为取模运算的中“除数”。

位运算符

位运算符以二进制为单位进行运算,其操作数与运算结果都是整型值,适用的数据类型有byte,short,char,int,long
运算符名称示例说明
&位与x&y把x与y按位求与
|位或x|y把x与y按位求或
~位非~x把x按位求非
^位异或x^y把x与y按位求异或
>>右移x>>y把x的各位右移y位
<<左移x<<y把x的各位左移y位
>>>0填充的右移x>>>y把x的各位右移y位,左边添0
package cn.ryjiaoyu.www.nuit2.operators;

import org.junit.Test;

/**
 * 位运算符
 */
public class Demo01 {
    /**
     * &(位于)运算符
     * 将整数数据化为二进制数据,再按位求与()
     * 当两个二进制数的位数不同时,从最后位开始求与,差的添0
     * 十进制转二进制:Integer.toBinaryString(n)
     */
    @Test
    public void m1(){
        int x=65;  //x化为二进制为:1000001
        int y=33;  //y化为二进制为: 100001
        int z=x&y; //z为:1
        System.out.println(z);
    }
    /**
     * ^(位异或)运算:
     * 按位求异或,0与1求异或为1,其余皆为0;
     */
    @Test
    public void m2(){
        int x=54;   //x的二进制为:110110
        int y=30;   //y的二进制为: 11110
        int z=x^y;  //z的二进制为:101000
        System.out.println(z);
    }
    /**
     * >>(右移)运算:
     * x>>y:把x的各位右移y位
     * 当x为正整数时,x的二进制数右移y位,如方法m3();
     * 当x位负整数时,如方法m4();
     */
    @Test
    public void m3(){
        int x=70;   //x的二进制为:1000110
        int y=2;
        int z=x>>y; //z的二进制为:0010001
        System.out.println(z);
    }
    @Test
    public void m4(){
        /**
         * x=-70
         * 其原码为:11000110(第一位为符号位,表示为负数,符号位一直不变)
         * 取其反码:10111001
         * 取其补码:10111010(反码的最后位加1,满二进一)
         * 补码右移两位,左边添两个1:11101110
         * 取反码:10010001
         * 取原码:10010010(上一步的反码最后位加一,满二进一)
         * 最终答案为:-18
         */
        int x=-70;   //x的二进制为:11000110
        int y=2;
        int z=x>>y; //z的二进制为:10010010
        System.out.println(z);
    }
}

注意:0填充的右移(>>>)是不论被移动属是正数还是负数,左边移进的部分一律补0。

关系运算符

运算符名称示例功能
<小于a<ba小于b时返回true,否则返回false
<=小于等于a<=ba小于等于b时返回true,否则返回false
>大于a>ba大于b时返回true,否则返回false
>=大于等于a>=ba大于等于b时返回true,否则返回false
==等于a==ba等于b时返回true,否则返回false
!=不等于a!=ba不等于b时返回true,否则返回false

逻辑运算符

符号名称功能说明
只操作一个数据,对数据取反
&两个条件同时为true才为true,否则为false
|两个条件只要有一个为true就为true,否则为false
^异或两个条件真值不同,则异或结果为true,否则为false
&&短路与同&,两个条件同时为true才为true,否则为false
||短路或两个条件只要有一个为true就为true,否则为false

短路与和短路或是按照“短路”的方式进行求值的,即当第一个表达式可以判断出整个表达式的值时,后面的就不用运算了。
比如:a&&b,若表达式a的值为false,那么表达式b就不用运算了;a||b,若表达式a的值为true,那么表达式b也就不用计算了。

三目运算符

三目运算符也称条件运算符,用法如下:
condition?a:b
其中条件condition是一个布尔表达式,若condition为true,那么表达式的值为a,否则为b。
package cn.ryjiaoyu.www.nuit2.operators;

public class Demo02 {
    /**
     * 三目运算符:
     * 布尔表达式?a:b
     */
    public static void main(String[] args) {
        int a=10,b=a;
        System.out.println(a!=b?3:8);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值