【JAVA学习笔记】——操作符

在这里插入图片描述

算术运算符

基本四则运算符: + - * / %

四则运算应该大家都很熟悉,值得注意的是除法:

1、int / int 的到的结果只能是int,如需得到小数则要借用double类型来计算

如:

int a = 1;
int b = 2;
System.out.println(a / b);
// 结果为 0

//如要得到0.5,得把其中一个转为double
System.out.println((double)a / b);

运行结果:
在这里插入图片描述

2、0不能作为除数

int a = 1;
int b = 0;
System.out.println(a / b)
// 运行结果
Exception in thread "main" java.lang.ArithmeticException: / by zero
at Test.main(Test.java:5)

3、%是取余符号不仅能对int取模,也能对double取模

System.out.println(11.3 %4);

运行结果:
在这里插入图片描述

复合运算符

运算符描述例子
+=将左边操作数与右边操作数的值相加后,在赋值给左边操作数a += 1 等价于 a = a + 1
-=将左边操作数与右边操作数的值相减后,在赋值给左边操作数a -= 1 等价于 a = a - 1
*=将左边操作数与右边操作数的值相乘后,在赋值给左边操作数a *=1 等价于 a = a * 1
/=将左边操作数与右边操作数的值相除后,在赋值给左边操作数a /= 1 等价于 a = a / 1

自增/自减操作符

++ 可以置于操作数前面,也可以放在后面,如:

++i;
i++ ;

++i表示,i自增1后再参与其它运算;
i++ 则是i参与运算后,i的值再自增1。
自减运算符--与之类似,只不过是变加为减而已,故不重述。
示例:

int a = 10;
int b = ++a;
System.out.println(b);
int c = a++;
System.out.println(c);

运行结果:
在这里插入图片描述
因此:如果不去自增运算的表达式的返回值,则后置自增和前置自增没有区别;如果去表达式的返回值,则前置自增的返回值是自增后的值,后置自增的返回值是自增之前的值。

关系运算符

关系运算符主要有六个:

== (等于) !=(不等于) <(小于) >(大于) <=(小于等于) >=(大于等于)
示例:

int a = 10;
int b = 20;
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);
System.out.println(a >= b);

运行结果:
在这里插入图片描述
从运行结果得出:关系运算符的表达式的返回值都是boolean类型。

逻辑运算符

&&(逻辑与)
||(逻辑或)
!(逻辑非)

逻辑与&&

规则:两个表达式都为true,结果为true,否则结果为false。
示例:

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

运行结果:在这里插入图片描述

逻辑或||

规则:两个表达式都为false,结果为false,否则结果为true。

int a = 10;
int b = 20;
int c = 30;
System.out.println(a < b || b < c);

在这里插入图片描述

逻辑非!

操作数为 true, 结果为 false; 操作数为 false, 结果为 true(这是个单目运算符, 只有一个操作数)

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

运行结果:
在这里插入图片描述

短路求值

1.对于&&,如果左侧表达式为false,则表达式的返回值为false,则右侧的表达就不会执行。
2.对于||,如果左侧表达式为true,则整个表达式的返回值为true,同样右侧的表达式不执行。
示例:

System.out.println(10 > 20 && 10 / 0 == 0); // 打印 false
System.out.println(10 < 20 || 10 / 0 == 0); // 打印 true

运行结果:
在这里插入图片描述
我们知道10/0在编译器内会报错,但是短路求值的规则,所以没有执行该语句,所以编译器就不会报错。

位运算

位操作:是按二进制位进行运算。

操作符功能
&按位与:如果两个二进制位都是1,则结果为1,否则结果为0。
|按位|:如果两个二进制位都是0,则结果为0,否则结果为1。
~按位取反~:如果二进制位为0,则转为1,为1则转为0
^按位异或^:如果两个数字的二进制位相同,则异或为0,相异结果为1。

移位运算

java中的移位运算符有三个:(都是按照二进制位进行运算)

<< >> >>>

左移<<

最左侧位不要了,最右侧补0.
示例:

 public static void main(String[] args) {
        int a = -20;
        int b = 20;
        System.out.printf("%d\n", a << 1);
        System.out.println((b << 1));
    }

运行结果:等效于乘以2.在这里插入图片描述

右移>>

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

 		int a = -8;
        int b = 20;
        System.out.printf("%d\n", a >> 1);
        System.out.println((b >> 1));

运行结果:等效于除2.
在这里插入图片描述

无符号右移>>>

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

int a = 0xffffffff;
System.out.printf("%x\n", a >>> 1);
// 运行结果(注意, 是按十六进制打印的)
7fffffff

Tips:

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

条件运算符(三目操作符)

java中唯一的一个三目操作符。
用法:

表达式1? 表达式2 : 表达式3
其中表达式1位boolean表达式,若表达式1为真(true),执行表达式2,若 表示1为假(false),则执行表达式3。

示例:

//求两个整数的最大值
int a = 10;
int b = 20;
int max = (a > b) ? a : b;
//运行结果 max = 20;

运算符的优先级

在这里插入图片描述
运算符之间是有优先级的. 具体的规则我们不必记忆. 在可能存在歧义的代码中加上括号即可
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

八只脚抠脚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值