栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JavaSE运算符

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaSE运算符

文章目录
  • 1.什么是运算符?
    • 2. 算术运算符
      • (1) 基本四则运算符
      • (2) 增量运算符
      • (3) 自增/自减运算符
    • 3.关系运算符
    • 4.逻辑运算符
      • (1) 逻辑与 &&
      • (2) 逻辑或 ||
      • (3) 逻辑非 !
    • 5.位运算符
      • (1) 按位与 &
      • (2) 按位或 |
      • (3) 按位取反 ~
      • (4) 按位异或 ^
    • 6.移位运算符
      • (1) 左移 <<
      • (2) 右移 >>
      • (3) 无符号右移 >>>
    • 7.条件运算符
    • 8.运算符的优先级

1.什么是运算符?

计算机通常会执行数学运算,在执行数学运算过程中就会用到运算符。

运算符:对操作数进行操作时的符号,不同运算符操作含义不同。

2. 算术运算符 (1) 基本四则运算符
+ - * / %

我们主要看除法运算符:

    public static void main(String[] args) {
        System.out.println(5/2);//2
        System.out.println(5.0/2);//2.5
        System.out.println(5/2.0);//2.5
        System.out.println((float) 5/2);//2.5
        System.out.println(5/(float)2);//2.5
        System.out.println((float) (5/2));//2.0
    }

通过结果我们可以发现它的运算法则。
求余数:

    public static void main(String[] args) {
        System.out.println(20%3);//2
        System.out.println(-20%3);//-2
        System.out.println(20%-3);//2
        System.out.println(-20%-3);//-2
    }

我们发现只要是被除数是负的那么余数也是负的,这是我通过观察得出的一个小规律,当然用笔算也是很简单的,细心一点是不会出错的。
小数和小数之间也是可以求余数的:

在Java里面%左右两边可以是小数,也就是说可以对小数进行求余。

    public static void main(String[] args) {
        System.out.println(12.5 % 10.5);
        System.out.println(11 % 10.5);
        
    }
2.0
0.5

右操作数为0的话会报错

    public static void main(String[] args) {
        System.out.println(10 / 0);
    }

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

    public static void main(String[] args) {
        System.out.println( 2 + 3.5);//5.5
    }
(2) 增量运算符
+=  -=  *=  %=

运算符操作完成后,将结果赋值给左操作数

    public static void main(String[] args) {
        int a = 9;
        a += 4;//相当于 a = a + 4
        System.out.println(a);//13
    }

增量运算符可以自动帮我们进行类型的转换

    public static void main(String[] args) {
        double d = 11.5;
        int a = 10;
        //a = a +d;错误警告
        a += d;//自动转换成int型
        System.out.println(a);//21
    }
(3) 自增/自减运算符

直接上代码:

    public static void main(String[] args) {
        int b = 1;
        b++;//b加1 此时 b = 2
        System.out.println(b++);//此时是后置++ 表达式先使用 再++ 所以 输出2 此时 b = 3
        ++b;//前置++给b加1  b = 4
        System.out.println(++b);//前置++ 先++ 再使用 所以此时输出5   b = 5
        System.out.println(b);//输出5
    }

注意:只有变量才能使用自增/自减运算符,常量不能使用,因为常量不能被修改。

3.关系运算符
==  !=  <  >  <=  >=

关系运算符的运算的结果是 true 或者 false

    public static void main(String[] args) {
        int a = 13;
        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);//true
        System.out.println(a >= b);//false
    }

注意:

   public static void main(String[] args) {
        int a = 8;
        if(6 < a < 9){
        }
    }

4.逻辑运算符 (1) 逻辑与 &&

要求:
1.都是布尔表达式
2.如果第一个表达式为假,那么就不会执行第二个表达式【短路】


(2) 逻辑或 ||

(3) 逻辑非 !

!后面一定是一个布尔表达式

    public static void main(String[] args) {
        int a = 4;
        System.out.println(!(a<5));//false
        System.out.println(!(a == 4));//false
        System.out.println(!(a != 4));//true
    }
5.位运算符 (1) 按位与 &

对应位上如果有 0,结果就是 0

1011011101
1011010110 按位与操作&、
---------- 
1011010100

用途:寻找 这一位是不是都是1

(2) 按位或 |

只要这一位是1,结果就是1,求并集

1011011101
1011010110 按位或操作 ||
---------- 
1011011111     
(3) 按位取反 ~

1变成0,0变成1

1011011101
---------- 按位取反
0100100010   

(4) 按位异或 ^

不一样的进行或,一样的是0

1011011101
1011010110 按位异或操作 ^
---------- 
0000001011                 
6.移位运算符 (1) 左移 <<

每左移一下,夸大2倍

0000 0100  4
0000 0100 << 1  -----> 0000 1000   8
0000 0100 << 2  -----> 0001 0000   16
(2) 右移 >>

每右移一下,缩小2倍

0001 0000 16
0001 0000   >> 1 -----------> 0000 1000  8 
0001 0000   >> 2 -----------> 0000 0100  4
(3) 无符号右移 >>>

最右侧位不要了, 最左侧补 0,右移之后不管符号是0还是1,都补0

    public static void main(String[] args) {
        System.out.println(-1>>>1);//最大值:2147483647
    }
1111 1111 >>> 1 -----> 0111 1111

思考:有没有无符号左移???

不存在无符号左移,最左边无符号位

7.条件运算符

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

表达式1为真,执行表达式2,否则执行表达式3

注意:c 的类型要同时满足表达式2和3

   public static void main(String[] args) {
        int a = 10;
        int b = 20;
        //int c = a>b? 1 : 2.0;  这种写法是错误的 c的类型要同时满足表达式2和3
        double c = a>b ? 1 : 2。0
        
    }
8.运算符的优先级
*和 / 的优先级要高于 +和 -
 +的优先级高于 >>

注意:运算符之间是有优先级的. 具体的规则我们不必记忆. 在可能存在歧义的代码中加上括号即可

求a 和 b的平均值:

    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int c = a + ((b - a) >> 1);
        System.out.println(c);//15
    }


对于位操作相关的运算符稍微注意加括号。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1031273.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号