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


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

相关推荐
繁依Fanyi7 分钟前
828华为云征文|华为Flexus云服务器搭建Cloudreve私人网盘
开发语言·人工智能·pytorch·python·算法·华为云·php
西瓜本瓜@12 分钟前
在Android中fragment的生命周期
android·开发语言·android studio·kt
Che3rry15 分钟前
C/C++|关于多线程冲突
java·c语言·c++
lovPopcorn18 分钟前
MQ入门(一):同步调用和异步调用--RabbitMQ基础入门
java·rabbitmq
优联前端22 分钟前
uni-app-通过vue-cli命令行快速上手
开发语言·前端·vue.js·uni-app·优联前端
极客先躯39 分钟前
高级java每日一道面试题-2024年9月15日-架构篇[分布式篇]-如何在分布式系统中实现事务?
java·数据库·分布式·面试·架构·事务·分布式篇
老半撅儿39 分钟前
Python基础 | 在虚拟环境中安装并在指定文件夹中打开Jupyter notebook
开发语言·python·jupyter
pumpkin8451440 分钟前
SIP Servlets学习
开发语言·学习
卑微的Coder1 小时前
python画正方形、平行四边形、六边形、五角星、风车(四个半圆)
开发语言·python
bugtraq20211 小时前
Fyne ( go跨平台GUI )中文文档-绘图和动画(三)
开发语言·后端·golang