当前位置: 首页 > article >正文

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


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


http://www.kler.cn/a/106926.html

相关文章:

  • 项目技术栈-解决方案-web3去中心化
  • 基于RK3568J多网口电力可信物联网关解决方案
  • 设计模式之装饰器模式(SSO单点登录功能扩展,增加拦截用户访问方法范围场景)
  • 【MySQL】MySQL函数之JSON_EXTRACT
  • 【OceanBase 诊断调优】—— ocp上针对OB租户CPU消耗计算逻辑
  • 大数据开发面试宝典
  • R语言入门看这一章就够了(上)
  • SQL查询优化---如何查询截取分析
  • C++之特殊类的设计
  • MATLAB中polyvalm函数用法
  • Java零基础入门-关系运算符
  • Splunk 之 filed 恢复
  • unity面试八股文 - 常用工具与算法
  • Map集合 遍历:lambda方式
  • 计算机视觉的相机选型
  • 力扣labuladong——一刷day09
  • 通过阿里云创建accessKeyId和accessKeySecret
  • 线程池的理解
  • 字符串与基本类型之间的相互转换
  • vue2组件库-上传组件
  • 框架安全-CVE 复现SpringStrutsLaravelThinkPHP漏洞复现
  • Peter算法小课堂—归并排序
  • 【Linux】安装与配置虚拟机及虚拟机服务器坏境配置与连接
  • LibreOffice编辑excel文档如何在单元格中输入手动换行符
  • 如何中断一个正在运行的线程?
  • Java关于实例对象调用静态变量和静态方法问题