-运算符-

目录

一.算术运算符

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

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

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

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

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

(一).逻辑与  (表达式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)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值