【JavaSE重点知识归纳】第3节:运算符(算术、关系、逻辑、位、移位、优先级)

目录

一:什么是运算符

二:算术运算符

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

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

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

三:关系运算符

四:逻辑运算符(重点)

五:位运算符

六:移位运算符

七:条件运算符

八:运算符的优先级


一:什么是运算符

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

二:算术运算符

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

(1)都是二元运算符,使用时必须要有左右两个操作数

(2)int/int 结果还是int类型,而且会向下取整

(3)做除法和取模时,右操作数不能为0,会算术异常报错

复制代码
System.out.println(1/0) ;//error
System.out.println(1%0) ;//error

(4)%不仅可以对整型取模,也可以对double类型取模

复制代码
System.out.println(12.5%2.0) ;//2.5

(5)当两侧操作数不一样是,会向类型大的提升

复制代码
System.out.println(1+1.1) ;//会提升为double类型
2.增量运算符(+=、-=、*=、%=)

该运算符可以帮我们进行类型转换,将操作的结果赋值给左操作数

复制代码
int a=10;
a=(int)(a+1.1);//a+1.1为double,但是a为int类型,需要强制转换为int
a+=1.1;//增量运算符可以自动转换为类型大的,不需要转换
3.自增/自减运算符(++、--)

(1)++是给变量的值+1,--是给变量-1

(2)如果单独使用,【前置++】和【后置++】没有任何区别

(3)如果混合使用,【前置++】先+1,然后使用变量+1之后的值;【后置++】先使用原来变量的值,表达式结束时给变量+1

复制代码
int a=1;
a++;//a=2
System.out.println(a++);//后置++,先使用,输出2,即a=2,然后+1
System.out.println(a);//a=3

三:关系运算符

(1)关系运算符有6个,==,!=,<,>,<= ,>=

(2)在Java当中,=表示赋值,==表示相等

(3)当需要多次判断是,不要连着写,比如:3<a<5(×)。当a=2时,3<a为false,false<5不能比

四:逻辑运算符(重点)

逻辑运算符有三个:&&,||,!,运算结构都是boolean类型

(1)逻辑与&&:表达式1&&表达式2,左右表达式必须是boolean类型

两个表达式都是真,结果才为真,只要一个为假,结果就是假

(2)逻辑或||:表达式1&&表达式2,左右表达式必须是boolean类型

左右表达式至少有一个为真,则结果为真

(3)逻辑非!:!表达式

真变假,假变真

(4)短路求值

复制代码
System.out.println(1>2&&1/0==0);//打印false
//对于&&:表达式1为假,就不会执行表达式2了
System.out.println(1<2&&1/0==0);//打印true
//对于||:表达式1为真,就不会执行表达式2了

//&和|如果表达式结果为boolean时,也表示逻辑运算,但与&& ||相比时,他们不支持短路求值

五:位运算符

数据操作的最小单位是比特,最小的存储单位是字节

位操作表示按二进制位运算,主要有4个:& ,|,~,^

(1)按位与&:如果两个二进制位都是1,则结果也为1,否则为0

(2)按位或|:两个二进制位都是0,则结果为0,否则结果为1

(3)按位取反~:0转1,1转0

复制代码
int a=0xf;//表示16进制 ,f为十进制的15
System.out.printf("%x\n",a);
System.out.printf("%x\n",~a);//用16进制打印
结果:
f
fffffff0

(4)按位异或^:两个数字的二进制位相同为0,相异为1

a^a=0 a^0=a

六:移位运算符

(1)左移<<:最左侧位不要了,最右侧补0【左移一位,相当于原数字*2】

向左移位时,丢弃的是符号位,因此正数左移可能会变成负数

(2)右移>>:最右侧位不要了,最左侧补符号位(正数补0,负数补1)【右移一位,相当于原数字/2】

(3)无符号右移>>>:最右侧位不要了,最左侧补0

(4)由于计算机计算移位效率高于计算乘除,当某个代码正好乘除2的N次方的时候可以用移位运算符代替

七:条件运算符

条件运算符(也称三目运算符)只有一个:表达式1?表达式2:表达式3

当表达式1的值为true时,整个表达式的值为表达式2的值

当表达式1的值为false时,整个表达式的值为表达式3的值

八:运算符的优先级

(1)运算符之间是有优先级的,具体的规则我们不必记忆,在可能存在歧义的地方加括号即可

(2)要注意的是:&&优先级高于||

复制代码
System.out.println(10>3||10<3&&10<3);//true
//加括号
System.out.println((10>3)||(10>3&&10<3));
相关推荐
唐叔在学习5 分钟前
【唐叔学算法】第19天:交换排序-冒泡排序与快速排序的深度解析及Java实现
java·算法·排序算法
_nirvana_w_5 分钟前
C语言实现常用排序算法
c语言·算法·排序算法
music0ant9 分钟前
Idea 配置环境 更改Maven设置
java·maven·intellij-idea
唐叔在学习13 分钟前
【唐叔学算法】第18天:解密选择排序的双重魅力-直接选择排序与堆排序的Java实现及性能剖析
数据结构·算法·排序算法
记得开心一点嘛24 分钟前
Nginx与Tomcat之间的关系
java·nginx·tomcat
界面开发小八哥37 分钟前
「Java EE开发指南」如何用MyEclipse构建一个Web项目?(一)
java·前端·ide·java-ee·myeclipse
王伯爵40 分钟前
<packaging>jar</packaging>和<packaging>pom</packaging>的区别
java·pycharm·jar
Kenneth風车1 小时前
【机器学习(九)】分类和回归任务-多层感知机(Multilayer Perceptron,MLP)算法-Sentosa_DSML社区版 (1)11
算法·机器学习·分类
最后一个bug1 小时前
rt-linux中使用mlockall与free的差异
linux·c语言·arm开发·单片机·嵌入式硬件·算法
Q_19284999061 小时前
基于Spring Boot的个人健康管理系统
java·spring boot·后端