JAVA运算符小结

目录

算数运算符(+, -, *, /)

取模/取余运算符(mod)

自增与自减运算符(num++,num--,++num,--num)

逻辑运算符(&&, ||, !)

位运算(&, |, ^)

<< >>和>>>

 比较运算符(<, >, <=, >=, ==, !=)


运算符类型符号
算数运算符' + ',  ' - ',  ' * ',  ' / ' 
取模运算符' % '
自增自减运算num++, num--, --num, ++num
逻辑运算符&&, ||, !
运算符&, |, ^
<< >>和>>> 位移<<, >>, >>>
比较运算符<, >, <=, >=, ==, !=

算数运算符(+, -, *, /)

java中四种运算符 +, -, *, / 分别代表加减乘除

    public static void main(String[] args) {
        int a = 10;
        int b = 3;
        System.out.println(a + b);//13
        System.out.println(a - b);//7
        System.out.println(a * b);//30
        System.out.println(a / b);//3
    }

注意事项:

+ - 时需要注意的是不要超过该类型的最大值或最小值,如果在最大值上继续加则会输出最小值,同理在最小值上继续减则会输出最大值

    public static void main(String[] args) {
        int a = Integer.MAX_VALUE;//int最大值
        int b = Integer.MIN_VALUE;//int最小值
        System.out.println(a);//2147483647
        System.out.println(a+1);//-2147483648
        System.out.println(b);//-2147483648
        System.out.println(b-1);//2147483647
    }

在进行除法(/)的时候如果是两个不能整除的int,则会忽略小数点返回一个int类型的结果, 分母不能为0! 当一浮点类型除0时会返回一个infinity,当使用整型除0时会直接报错

    public static void main(String[] args) {
        System.out.println(10/3);//3
        System.out.println(10.0/3);//3.333循环
        System.out.println((float)10/3);//3.333循环
        System.out.println((10/3)*1.0);//3.0
        System.out.println(10.0/0);//Infinity(无穷)
        System.out.println(10/0);//直接报错
    }

取模/取余运算符(mod)

取模也叫取余, 返回除法后两个数的余数,如果两个数可以整除则返回0,与上面除法同理如果一个整型和0取模会直接报错,浮点型和0取模时会返回NaN(Not a Number).

    public static void main(String[] args) {
        //无法被整除的情况
        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(10.0%3);//1.0
        System.out.println(10.0%3.1);//0.69999
        System.out.println(10.0%0);//NaN
        //可以被整除时
        System.out.println(10%2);//0
    }

这里是一个用取模来判断输入的数是奇数还是偶数的例子

    public static void main(String[] args) {
        //输入
        Scanner scan = new Scanner(System.in);
        int num = scan.nextInt();
        //如果能被2整除则为偶数
        if(num % 2 == 0){
            System.out.println("偶数");
        }else{
            System.out.println("奇数");
        }
    }

自增与自减运算符(num++,num--,++num,--num)

num++ 和 ++num都代表在num的基础上加1但是num++是在该次运行直接后再加1,++num是读取num时就已经加过1了.如以下代码:

    public static void main(String[] args) {
        int num = 10;
        int test = 20;
        //num++在读取时并不会加1
        System.out.println(num++);//10
        //在这里num = 11
        //当使用++num时读取num时1已经加上了
        //所以这里的运算是 11+1
        System.out.println(++num);//12
        //此时num = 12
        System.out.println(num++ + ++num);//12+14 = 26
        //同理
        System.out.println(--test);//19
        System.out.println(test--);//19
        System.out.println(test);//18
    }

逻辑运算符(&&, ||, !)

&& (逻辑与) 代表当两个条件都为真时返回真,任意一个为假则返回假

||  (逻辑或) 当两个条件有一个及以上为真时返回真,只有两个条件都为假时返回假

! (逻辑非) 把true变成false,false变成true

    public static void main(String[] args) {
        int num1 = 10;
        int num2 = 20;
        //与 &&
        System.out.println((num1 > num2 && num1 != 0));//false && true 返回false
        System.out.println(num1 != 0 && num2 != 0);// true && true 返回 true
        //或 ||
        System.out.println((num1 > num2 || num1 != 0));//false || true 返回true
        System.out.println(num1 == 0 || num2 == 0);//false || false 返回false
        //非 !
        System.out.println(!true);//return false
        System.out.println(!false);//return true
    }

位运算(&, |, ^)

位运算是在电脑储存的二进制上进行运算,二进制只有0和1

运算名符号描述例子
&两个都是1时返回1,否则返回000110 & 00100 = 00100
|当有一个或以上是1时就返回1,两个都为0则返回000110 | 00100 = 00110
异或^当对位不同时返回1,其他情况返回0.所以A^A时返回000110 ^ 00100 = 00010
    public static void main(String[] args) {
        int a = 14;//1110 二进制
        int b = 10;//1010 二进制
        // 0000 1110(14)
        //&0000 1010(10)
        // 0000 1010 = 10
        System.out.println(a & b);//10
        // 0000 1110(14)
        //|0000 1010(10)
        // 0000 1110 = 14
        System.out.println(a | b);//14
        // 0000 1110(14)
        //^0000 1010(10)
        // 0000 0100 = 4
        System.out.println(a ^ b);//4
        System.out.println(a ^ 14);//0
    }

一个计算二进制有几个1的算法:

比如0110,里有2个1,所以返回2.

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        int cout = 0;
        while(n != 0){
            n = n & (n-1);
            //计算&的次数
            cout++;
        }
        System.out.println(cout);
    }

<< >>和>>>

<<操作二进制左移,并在最右边补0,>>操作二进制右移

比如14的二进制是 0000 1110(14)

14<<3代表14的二进制向左移动三个变成 0111 0000(112)

右移同理

要注意的是位移不可以是负数

>>>是无符号右移运算符,当一个数是负数是不得使用,他会把符号位的1读入,没有<<<

    public static void main(String[] args) {
        int a = 14;//0000 1110 二进制
        //     0000 1110(14)
        //>>>3 0000 0001(1)
        System.out.println(a>>3);//1
        System.out.println(-a>>1);//-7
        System.out.println(a>>>3);//1
        System.out.println(-a>>>3);//536870910
        //int类型储存为4字节 储存32位
        //所以左移和右移大于等31位都是非法的
        System.out.println(a<<32);//错误示范
        //也不能为负数
        System.out.println(a>>-2);//错误示范
    }

 比较运算符(<, >, <=, >=, ==, !=)

运算名符号描述
小于<判断左边的数是否小于右边
大于>判断左边的数是否大于右边
小于等于<=判断左边的数是否小于等于右边(等号和小于号位置不能互换)
大于等于>=判断左边的数是否大于等于右边
等于==判断等号两边是否相等,一个 = 为赋值, ==为判断
不等于!=左边不等于右边时,则返回真
    //比较运算符的结果为bool类型
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println(a == b);//false
        System.out.println(a != b);//true
        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);//错误示范
    }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值