Java运算符

前言:

本篇博客将为大家介绍Java中的运算符。

目录

概念

各类运算符介绍

算术运算符

关系运算符

逻辑运算符

位运算符

移位运算符

条件运算符

运算符的优先级



概念

计算机最基本的作用就是执行数学运算,如

public class Demo1 {
    public static void main(String[] args) {
        int a = 19;
        int b = 23;
        int c = a+b;
        System.out.println(c);
    }
}

在这段代码中 a+b中的加号即是运算符(对操作数进行操作的符号)


各类运算符介绍

算术运算符

  1. 基本四则运算符:加减乘除模(+ - * / %)
  2. 增量运算符:加等 减等 乘等 除等 模等(+= -= *= /= %=)
  3. 自增自减运算符:++ --

基本四则运算符:加减乘除模(+ - * / %)

public class Demo1 {
    public static void main(String[] args) {
        int a = 21;
        int b = 10;
        System.out.println(a+b);
        System.out.println(a-b);
        System.out.println(a*b);
        System.out.println(a/b);
        System.out.println(a%b);
    }
}

public class Demo1 {
    public static void main(String[] args) {
        System.out.println(10%3);
        System.out.println(10%-3);
        System.out.println(-10%3);
        System.out.println(-10%-3);
        System.out.println(11.5%2);
    }
}

注意:

  • 全为二元运算符,操作时左右两侧都必须要有数据
  • int/int还是int类型,且向下取整(如:3/2=1.5,但是因为是int类型,只能保留整数部分,于是结果就是1,也不会四舍五入,若想要保留其带小数形式的结果,可以乘以一个1.0)
  • 做除法和取模是,右操作数不能为0(除数不能为0)
  • %不仅可以对整型取模,还可以对double类型取模,但是无意义,一般都是对整型取模
  • 两侧操作数类型不一样时,向类型大的提升

增量运算符:加等 减等 乘等 除等 模等(+= -= *= /= %=)

public class Demo1 {
    public static void main(String[] args) {
        int a = 12;
        a += 2;
        System.out.println(a);

        int b = 10;
        b -= 3;
        System.out.println(b);

        int c = 15;
        c /= 5;
        System.out.println(c);

        int d = 2;
        d *= 3;
        System.out.println(d);

        int e = 21;
        e %= 10;
        System.out.println(e);
    }
}

注意:

  • 只有变量才可以使用这种运算符,常量不能使用这类运算符
  • 这类运算符会帮我们进行类型转换

自增自减运算符:++ --

注意:

  • ++是让变量+1,--是让变量-1
  • ++a先自身加一,再计算,a--是先计算,得到的结果再减一。--也是一样的。
    public class Demo1 {
        public static void main(String[] args) {
            int a = 2;
            a++;
            System.out.println(a);
    
            int b = 2;
            b = a++;
            System.out.println(b);
            System.out.println(a);
        }

  • 只有变量才能用自增自减运算符,因为常量不可更改。

关系运算符

关系运算符主要有6个:== != > < <= >= ,其返回值为false或者true

public class Demo1 {
    public static void main(String[] args) {
        int a = 2;
        int b = 3;
        int c = 2;
     
        System.out.println(a == c);
        System.out.println(a == b);
        System.out.println(a != b);
        System.out.println(a > b);
        System.out.println(a < b);
        System.out.println(a >= c);
        System.out.println(b <= c);
    }
}

需要多次判断时,不能连着写(3<a<5)


逻辑运算符

逻辑运算符主要有三个:&& || !,运算结果都是Boolean类型

  • 逻辑与:&&

语法规则:表达式1&&表达式2(表达式1和2的返回值都必须时Boolean类型)

当表达式1和2都为真时,结果才为真,否则就是假

  • 逻辑或:||

语法规则:表达式1||表达式2(表达式1和2的返回值都必须是Boolean类型)

当表达式1和2都是假时,结果才是假,否则就是真

  • 逻辑非:!

语法规则:!表达式

表达式为真,结果就是假;表达式为假,结果就是真。总之就是一句话:和表达式反着来。

  • 短路求值

对于&&,如果左侧表达式为false,则结果一定时false,无需考虑右侧表达式(即使它不合法)

对于||,如果左侧表达式为true,则结果一定时true,无需考虑右侧表达式(即使它不合法)

但是对于&和|,它们不支持短路求值。


位运算符

Java中,数据存储的最小单位是字节,而数据操作的最小单位是比特位(一个字节占用8个比特位),位运算就是针对这些比特位的运算操作

位运算符主要有四个:& | ~ ^,其中~为一元运算符,剩下的三个都是二元运算符

按位与:& 二进制位数字都是1结果才是1,否则就是0

按位或:| 二进制位数字都是0则结果为0,否则就是1

按位取反:~ 二进制位数字如果是1,则转变成0;如果是0,就转变成1

按位异或:^ 二进制位相同为0,反之为1

注意:

  • 若两个数相同,则异或的值就是0(全部位都一模一样,异或一下就全为0了,结果也就是0)
  • 任何数和0异或得到的结果都是它本身

归纳:

可以结合上面的逻辑运算符来记忆和理解:把1看作真,0看作假

按位与可以和逻辑运算符中的与(&&)联系,逻辑运算符中与&&要同为真才得到真,按位与也是如此,同为真(也就是1)才能得到真(1),否则就是假(0)

按位或和逻辑或(||)联系起来,逻辑运算符中或(||)要同为假才能得到假,按位或也是如此,同为假(0)才能得到假(0),否则就是真(1)

按位取反可以和逻辑运算符非(!)联系起来,逻辑运算符非(!)是让结果和表达式的结果相反,而按位取反也是如此,真(1)的按位取反后得到假(0)的,假(0)的按位取反后得到真的(1)


移位运算符

左移:<<

最左侧位不要了,最右侧补0

因为舍去的是符号位,所以经过左移以后,数的符号可能改变。


右移:>>

最右侧位不要了,最左侧位补符号位(正数补0,负数补1)

无符号右移:>>>

最右侧位不要了,最左侧补0

注意:

  • 左移1位,相当于原数字*2;左移N位,相当于原数字*2的N次方
  • 右移1位,相当于原数字/2;右移N位,相当于原数字/2的N次方
  • 由于计算机中的移位运算的效率高于乘除,当某个代码正好乘除2的N次方的时候,可以用移位运算符代替
  • 移动负数位或者移动位数过大都没有意义

条件运算符

条件运算符只有一个(也是Java中唯一一个三目运算符):布尔表达式:表达式1?表达式2

如果布尔表达式为真,得到表达式1的结果;反之得到表达式2的结果

注意:

  • 表达式1和表达式2的结果返回值必须是同类型的,或者结果的数据类型可以发生类型隐式转换的
  • 表达式不能单独存在,其结果必须要被使用。即,不能不写前面的布尔表达式。

运算符的优先级

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值