Java操作符

🐵由于Java的操作符和C语言的操作符有很多相同之处,所以本篇文章只讲解Java操作符的重点和与C语言的不同点


1. 四则运算操作符:+ - * / %

1.做除法和取模时右操作数不能为0;

2.取模的有操作数可以是double类型,但是没有意义,一般对整形进行取模;

3.当操作符两边的操作数不同时,向范围小的向范围大的类型提升

4.当操作符两边的操作数大小小于4个字节时,会先提升到int型在进行计算

2. 增量操作符

+=、-=、*=、/=、%=

3. 自增,自减操作符

++、--

4. 关系操作符

==、!=、>、<、>=、<=

关系操作符的运算结果是boolean类型

复制代码
int a = 10;
int b = 20;
System.out.println(a == b); //打印结果:false

5. 逻辑操作符

&&、||、!

逻辑操作符的运算结果是boolean类型

其中!后面必须是布尔表达式,不能有以下写法:

复制代码
if (!a) { //编译报错
    ...
}

while (!a) { //编译报错
    ...
}

5.1短路求值

表达式1 && 表达式2:当表达式1结果为false,则整个表达式结果就为false,无需计算表达式2

表达式1 || 表达式2:当表达式1结果为true,则整个表达式结果就为true,无需计算表达式2

6. 位操作符

&、|、~、^

7. 移位操作符

<<、>>、>>>

<<(左移操作符):二进制比特位左侧位舍去,右侧位取0

复制代码
int a = 10;//1010
System.out.println(a << 1);//20
int b = -10;
System.out.println(b << 1);//-20
int c = 1;
System.out.println(c << 2);//4

总结:一个整数左移n位,相当于这个数乘上2^n;

>>(右移操作符):二进制比特位右侧位舍去,左侧位取符号位

>>>(无符号右移操作符):二进制比特位右侧位舍去,左侧位取0

8. 条件操作符

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

1.表达式2和表达式3需要是同类型的,除非会进行自动类型转换(隐式)或我们主动进行强制类型转换,否则会报错

复制代码
int a = 10;
int b = 20;
double c = 1;
int ret = a < b ? (int)c : b;

int a = 10;
int b = 20;
byte c = 5;
int ret = a < b ? c : b; //c会自动类型转换为int型

2.条件运算表达式不能单独存在,其结果必须被使用,否则会报错

复制代码
if ((a < b ? c : b) > 1) { //被使用
    ...
}

int ret = a < b ? c : b //被使用

例题:

复制代码
System.out.println(false  == true ? true : true == false ? false : false);

由于表达式1的结果为false,所以执行表达式3,表达式3的结果为false,所以整个表达式的结果为false


🙉本篇文章至此结束,有许多操作符都没有进行讲解是因为在之前的文章《操作符重点讲解》有过详细讲解

相关推荐
nanxun8866 小时前
记一次诡异的 Docker 容器"串包"故障排查
java
用户1563068103519 小时前
Day01 | Java 基础(Java SE)
java
行者全栈架构师10 小时前
Maven dependency:tree 的 8 个高级用法
java·后端
行者全栈架构师14 小时前
IDEA 中 Maven 项目的 15 个红色报错快速解决方法
java·后端
令人头秃的代码0_014 小时前
mac(m5)平台编译openjdk
java
唐青枫2 天前
Java JDBC 实战指南:从 Connection 到事务和连接池
java
一个做软件开发的牛马2 天前
MyBatis-Plus 从零实战:完整搭建可运行 Demo,BaseMapper 零 SQL、Wrapper 条件构造、分页插件与代码生成器详解
java·后端
用户3721574261352 天前
Java 处理 PDF 图片:提取 PDF 中的图片,并压缩 PDF 图片体积
java
用户3721574261352 天前
Java 打印 Word 文档:从基础打印到高级设置
java
用户3521802454752 天前
当 Prompt 学会"热更新":Spring Boot × Nacos3 AI 实战
java·spring boot·ai编程