【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));
相关推荐
MogulNemenis19 分钟前
力扣150题——多维动态规划
算法·leetcode·动态规划
程序员阿鹏30 分钟前
ArrayList 与 LinkedList 的区别?
java·开发语言·后端·eclipse·intellij-idea
18你磊哥31 分钟前
java重点学习-JVM类加载器+垃圾回收
java·jvm
聂 可 以33 分钟前
在SpringBoot项目中利用Redission实现布隆过滤器(布隆过滤器的应用场景、布隆过滤器误判的情况、与位图相关的操作)
java·spring boot·redis
长安初雪43 分钟前
Java客户端SpringDataRedis(RedisTemplate使用)
java·redis
繁依Fanyi1 小时前
使用 Spring Boot + Redis + Vue 实现动态路由加载页面
开发语言·vue.js·pytorch·spring boot·redis·python·算法
aloha_7891 小时前
B站宋红康JAVA基础视频教程(chapter14数据结构与集合源码)
java·数据结构·spring boot·算法·spring cloud·mybatis
尘浮生1 小时前
Java项目实战II基于Java+Spring Boot+MySQL的洗衣店订单管理系统(开发文档+源码+数据库)
java·开发语言·数据库·spring boot·mysql·maven·intellij-idea
临沂堇2 小时前
CCF刷题计划——训练计划(反向拓扑排序)
数据结构·c++·算法·拓扑·ccf
铁匠匠匠2 小时前
【C总集篇】第八章 数组和指针
c语言·开发语言·数据结构·经验分享·笔记·学习·算法