-运算符-

目录

一.算术运算符

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

(二).增量运算符+= -= *= %=

(三).自增/自减运算符++ --

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

三.逻辑运算符&&  ||  !

(一).逻辑与  (表达式1&&表达式2)

(二).逻辑或  ||

(三).逻辑非  !

(四).& 和 |(一般不这样用)

四.位运算符& | ~ ^

1.按位与&(都为1结果才是1,否则为0)

2.按位或|(有一个1结果就是1)

3.按位异或^(相异为1)

4.按位取反~(1变0,0变1)

五.移位(比特位/二进制位)运算 << >> >>>

1.左移 <<

2.右移 >>

3.无符号右移>>>

4.注意:

六.条件运算符


运算符就是对操作数进行操作的符号

一.算术运算符

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

1.上述运算符都是二元运算符。(必须有左右两个操作数)

2.int型/int型结果是int型,并且结果回向下取整。(例如3/2=1)

3.进行除法和模运算时,右操作数不能为0。(例如3/0,3%0,会出现错误)

4.在java中不仅可以对整型取模而且可以对double类型取模。(例如11.5%2.0==1.5)

5.两侧操作数类型不一致时,向类型大的提升。[1+0.2==1.2   int型(会提升为double型)+double型=double型]

(二).增量运算符+= -= *= %=

(三).自增/自减运算符++ --

1.a++与++a的区别。

2.a++中a必须是变量而不能是常量,常量不允许被修改。

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

1.一个错误写法: 3 < a < 5 (3 < a执行完是boolean型, boolean怎么能和5(int型)比较大小呢)

三.逻辑运算符&&  ||  !

运算后的结果都是boolean类型

(一).逻辑与  (表达式1&&表达式2)

1.表达式1与表达式2都为真,结果才是真,除此之外结果都为假。

2.短路求值:表达式1结果为false,表达式2不会被系统执行,结果一定是false

(二).逻辑或  ||

1.表达式1或者表达式2有一个结果为真,最终运算结果就是真(有一个为真就行)

2.短路求值:表达式1结果为true, 表达式2不会被执行,结果一定是true

(三).逻辑非  !

(四).& 和 |(一般不这样用)

&和|也可以表示逻辑运算,但与&&和||相比不支持短路求值

    public static void main(String[] args) {
        System.out.println((10 > 20) && (10 / 0 == 0));//不会报错,因为10 > 20执行后结果为false,10 / 0 == 0不会被执行
        System.out.println((10 > 20) & (10 / 0 == 0));//会报除数不能为0的错误,因为两个表达式都被执行了
    }

四.位运算符& | ~ ^

java中数据存储的最小单位是字节(byte, 1byte = 8bit),而数据操作的最小单位是比特(bit)

位运算就是对二进制位(比特位)进行操作。

注意;
这里的& |与标题三中的区别, 当&|的操作数为整数(int, short, long, byte) 的时候, 表示按位运算, 当操作数为boolean的时候, 表示逻辑运算.

1.按位与&(都为1结果才是1,否则为0)

        int a = 10;
        int b = 20;
        System.out.println(a & b);

2.按位或|(有一个1结果就是1)

3.按位异或^(相异为1)

    public static void main3(String[] args) {
        int a = 0x1;
        int b = 0x2;
        System.out.printf("%x\n", a ^ b);//输出3
    }

4.按位取反~(1变0,0变1)

    public static void main(String[] args) {
        int a = 0xf;//前缀0x代表十六进制,0xf化为十进制为15,化为二进制为1111
        System.out.printf("%x\n", ~a);//%x表示按十六进制方式输出
    }

五.移位(比特位/二进制位)运算 << >> >>>

1.左移 <<

左移会丢失符号位,因此正数左移可能会变成负数

 int a = 0x10;//十进制为2
 System.out.printf("%x\n", a << 1);
 //运行结果20(十六进制),十进制为4

2.右移 >>

最右侧bit位不要, 正数则最左侧补0,负数则最左侧补1

3.无符号右移>>>

最右侧bit位丢掉,最左侧补0

4.注意:

(1).没有 <<<

(2).运算2^N可以借助可以借用移位运算符

六.条件运算符

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

1.表达式2与表达式3结果必须是同类型

2.不能单独存在,产生的结果必须要被使用

 int a = 10;
 int b = 20;
 a > b? a : b;     // 报错:Error:(15, 14) java: 不是语句

3.

    public static void main(String[] args) {
        boolean flag = true == true ? false ? true :false :true;
        System.out.println(flag);
    }
    //运行结果为false
    //boolean flag = (true == true) ? (false ? true : false) :true;
    true == true 满足执行表达式1(false ? true : false)

相关推荐

  1. Python运算符

    2024-02-01 14:50:04       43 阅读
  2. 运算符讲解

    2024-02-01 14:50:04       29 阅读
  3. kotlin-运算符

    2024-02-01 14:50:04       41 阅读
  4. Mysql运算符

    2024-02-01 14:50:04       32 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-01 14:50:04       14 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-01 14:50:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-01 14:50:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-01 14:50:04       18 阅读

热门阅读

  1. nodejs中有哪些读取和写文件的函数和例子

    2024-02-01 14:50:04       33 阅读
  2. 第五章 类的继承与派生之——类的继承与派生

    2024-02-01 14:50:04       26 阅读
  3. BeanUtil.copyProperties(source,target)拷贝List注意事项

    2024-02-01 14:50:04       36 阅读
  4. 深度学习的进展

    2024-02-01 14:50:04       28 阅读
  5. 代码随想录算法训练营|day22

    2024-02-01 14:50:04       33 阅读
  6. Android studio布局详解

    2024-02-01 14:50:04       34 阅读
  7. 达梦数据库存储过程

    2024-02-01 14:50:04       26 阅读
  8. vue3:中warch监听的几种写法

    2024-02-01 14:50:04       33 阅读
  9. ModuleNotFoundError: No module named ‘flask._compat‘

    2024-02-01 14:50:04       28 阅读
  10. rsync将远程文件同步到本地

    2024-02-01 14:50:04       30 阅读