Java中所有的运算符,以及运算符优先级(总结)

news2024/11/13 18:15:30

运算法是一种特殊的符号,用于表示数据的运算、复制、比较等。

1、算数运算符

// % 取余运算:结果的符号和被模数的符号一致
12 % 5 == 2
-12 % 5 == -2
12 % -5 == 2
-12 % -5 == -2

int a1 = 10;
int b1 = ++a1;  // a1=11, b1=11
int a2 = 10;
int b2 = a2++;  // a2=11, b2=10

short s1 = 10;
s1++;  // 自增1,不会改变原本的数据类型
System.out.println(s1);  // 11

byte b1 = 127;
b1++;
System.out.println(b1);  // -128

负数补码变回原码:

方法1:减去1,符号位为1,其余位全部取反

方法2:由最低位(右)向高位(左)查找到第一个1与符号位之间的所有数字,按位取反

127 补码=原码:01111111, 127 + 1: 10000000

方法1:减1得 01111111,符号位为1其余为取反得 10000000

方法2: 第一个1已经是最后一个,因此没有数字需要取反,得到 10000000

在源码里面00000000和100000000都是表示0,这样比较浪费, 所以在补码里面,就把100000000当做 -2^7 ,以扩大补码表示范围

2、赋值运算符

赋值运算符:= (支持连续赋值)

扩展赋值运算符:+=   -=   *=   /=    %/

int j1, j2;
j1 = j2 = 3;

short s1 = 10;
s1 += 2;  // 自增2,不会改变原本的数据类型
System.out.println(s1);  // 12

int i1 = 1
i1 = i1 + 1;  // 不推荐
i1 += i1;  //推荐
i1++;  //最推荐

int i1 = 2;
i1 *= 0.1; //不改变类型, 所以值为int型:0
System.out.println(i1);  // 0
i1++;
System.out.println(i1);  // 1

int n1 = 10;
n1 += (n1++) + (++n1); // n1 = n1 + (n1++) + (++n1) 
System.out.println(n1);  // 10+10+12=32

3、比较运算符

4、逻辑运算符

异或:不一样就是 true

& 与 && 运算结果相同,当左边为 false 时,& 继续执行右边的运算,&& 则不再继续运算。(其实就是 && 更聪明一些,不做无用功, 开发推荐 &&)

| 与 || 运算结果相同,当左边为 true 时,| 继续执行右边的运算,|| 则不再继续运算。

boolean x = true;
boolean y = false;
short z = 42;
if ((z++ == 42) && (y = true)) z++;
if ((x = false) || (++z == 45)) z++;  // x=false 表示给x赋值false,所以判断为false
System.out.println(z);  // 46

5、位运算符

位运算符是直接对整数的二进制进行的运算。

对于 & 、|、^,当运算的是数值,则是位运算符;当运算的是boolean类型,则是逻辑运算符。

// 两数交换数值
// method1:需要定义临时变量
int temp = num1;
num1 = num2;
num2 = temp;

// method2:好处就是不需要定义临时变量;坏处是:相加可能超出存储范围,只能用于数值型。
num1 = num1 + num2;
num2 = num1 - num2;
num1 = num1 - num2;

// method3:好处是不会超出存储范围,局限性是:只能用于数值型
num1 = num1 ^ num2; 
num2 = num1 ^ num2; // (num1 ^ num2) ^ num2 -> num1, num1 赋值给 num2
num1 = num1 ^ num2; // (num1 ^ num2) ^ 原来num1的值 -> num2, num2 赋值给 num1

6、三元运算符

凡是 三元运算符 和 switch-case 的结构都可以改写为 if-else,反之不成立。三元运算符 和 switch-case 执行效率稍高于 if-else,所以如果取值较少时可选用 switch 或者 三元运算符。

int max = (m > n): m ? n; // 注意:两个可能结果需要一个统一的类型去接收

 7、运算符的优先级

不建议死记硬背,在实际的应用中去体会,自然而然就会用了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1202543.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

keras转onnx,TensorFlow转tf.keras.models.load_model,onnx精度转换

参考: https://blog.csdn.net/Deaohst/article/details/126864267 转onnx 别直接转onnx。 先转PB: import tensorflow as tfmodel_path ./models/model.h5 # 模型文件 model tf.keras.models.load_model(model_path) model.sa…

Microsoft outlook已停止工作

故障现象 运行outlook,无法进入程序,显示已停止工作 故障截图 解决方案 1、点击查看问题详细信息,查看故障模块名称,一般是某个dll动态链文件,然后下载或者拷贝该dll文件将其覆盖即可 2、如果找不到,可以使用专用的…

如何向MapInfo Pro添加自定义符号?

用户可以在MapInfo Pro中创建和使用自己的自定义图像作为符号。要访问这些自定义符号,请将它们放在CUSTSYMB目录中,然后从“符号样式”对话框(Style>符号样式)的“字体”列表中的“自定义符号”选项中选择它们。MapInfo Pro中的…

智慧化城市内涝的预警,万宾科技内涝积水监测仪

随着城市化进程的加速,伴随的是城市内涝问题日益凸显。频繁的暴雨和积水给市民的生活带来了诸多不便,也给城市的基础设施带来了巨大压力。如何解决这一问题,成为智慧城市建设的重要课题和政府管理的工作主题,只要内涝问题得到缓解…

实时数仓-Flink使用总结

阿里云实时计算Flink版是阿里云基于Apache Flink构建的企业级、高性能实时大数据处理系统。具备一站式开发运维管理平台,支持作业开发、数据调试、运行与监控、自动调优、智能诊断等全生命周期能力。本期将对Flink的使用进行总结。 1. Flink产品回顾 阿里云实时计算…

11月13日星期一今日早报简报微语报早读

11月13日星期一,农历十月初一,早报微语早读。 1、国家邮政局:“双11”当天全国快递业务量达6.39亿件; 2、公安机关通缉4名缅北电诈头目,其中一人为缅甸掸邦议会原议员; 3、多部门提醒:未满10…

【Debug】此语法需要一个导入的帮助程序,但找不到模块“tslib”

报错如下: 代码可以编译运行,但是会有红线和报错。 解决方法:TypeScript error “TS2354: This syntax requires an imported helper but module ‘tslib’ cannot be found” Issue #37991 microsoft/TypeScript GitHub 在tsconfig.jso…

MacOS下VMware Fusion配置静态IP

前言 在虚拟机安装系统后,默认是通过DHCP动态分配的IP,这会导致每次重启虚拟机ip都可能会改变,使用起来会有很多不便。 配置静态IP 查看主机网关地址 cat /Library/Preferences/VMware\ Fusion/vmnet8/nat.conf 查看主机DNS,m…

【中间件篇-Redis缓存数据库06】Redis主从复制/哨兵 高并发高可用

Redis高并发高可用 复制 在分布式系统中为了解决单点问题,通常会把数据复制多个副本部署到其他机器,满足故障恢复和负载均衡等需求。Redis也是如此,它为我们提供了复制功能,实现了相同数据的多个Redis 副本。复制功能是高可用Re…

贵金属投资怎样分析市场行情?

分析市场行情对于贵金属投资者来说非常重要,它可以帮助投资者更好地理解市场趋势和价格走势,从而做出更明智的投资决策。以下是一些常用的方法和工具,可用于贵金属市场行情分析: 1、基本面分析:基本面分析主要关注供求…

数字货币swap交易所逻辑系统开发分析方案

随着数字货币市场的快速发展, Swap交易所已成为一种重要的交易方式。本文将对数字货币Swap交易所逻辑系统开发进行分析,并探讨其优势、开发难点和解决方案。 一、数字货币Swap交易所逻辑系统开发的优势 数字货币Swap交易所是一种点对点的交易方式&#x…

更好的运用重生奇迹mu的每一个石头

重生奇迹mu中的每一个石头都是非常起作用的,然而任何一个石头,只要运用好了,在关键时刻,都是能够对我们起到非常直接的作用的,尽可能的把石头运用在最关键的细节上,那么这样能够达到的效果,也就…

压测必经之路,Jmeter分布式压测教程!

01、分布式压测原理 Jemter分布式压测是选择其中一台作为调度机(master),其他机器作为执行机(slave);当然一台机器也可以既做调度机,也做执行机。 调度机执行脚本的时候,master将会…

OpenWRT搭建个人web站点并结合内网穿透实现公网远程访问

文章目录 前言1. 检查uhttpd安装2. 部署web站点3. 安装cpolar内网穿透4. 配置远程访问地址5. 配置固定远程地址 前言 uhttpd 是 OpenWrt/LuCI 开发者从零开始编写的 Web 服务器,目的是成为优秀稳定的、适合嵌入式设备的轻量级任务的 HTTP 服务器,并且和…

231030期就业班开班咯!我在前方护航,让你稳稳入职

就业哪家强?还得看优橙! 11月9日,231030期就业班的小伙伴结束了为期8天的基础班学习,正式进入了就业班。优橙教育也为新一批就业班的同学举办了开班典礼。 典礼环节中不仅有多彩的抽奖活动,也有丰富的超值礼品,旨在鼓…

如何使用软路由R4S+iStoreOS实现远程访问内网电脑桌面

软路由R4SiStoreOS实现公网远程桌面局域网内电脑 文章目录 软路由R4SiStoreOS实现公网远程桌面局域网内电脑简介一、配置远程桌面公网地址二、家中使用永久固定地址 访问公司电脑**具体操作方法是:** 简介 上篇教程我们介绍了如何在iStoreOS中安装Cpolar&#xff0…

uniapp——项目day03

商品列表 分支创建 定义请求参数对象 获取商品列表数据 渲染商品列表结构 1. 在页面中&#xff0c;通过 v-for 指令&#xff0c;循环渲染出商品的 UI 结构&#xff1a; <template><view><view class"goods-list"><block v-for"(goods,…

响应式珠宝首饰展示网站模板源码带后台

模板信息&#xff1a; 模板编号&#xff1a;6201 模板编码&#xff1a;UTF8 模板颜色&#xff1a;黑白 模板分类&#xff1a;服饰、箱包、礼品、玩具 适合行业&#xff1a;珠宝饰品类企业 模板介绍&#xff1a; 本模板自带eyoucms内核&#xff0c;无需再下载eyou系统&#xf…

云汇优想:抖音矩阵系统有哪些类型?

抖音作为中国最热门的短视频分享平台之一&#xff0c;不断推陈出新&#xff0c;在内容管理和展示方面也进行了创新。其中&#xff0c;抖音矩阵系统是一项重要的功能&#xff0c;它提供了多种类型的矩阵&#xff0c;帮助用户更好地管理和展示自己的内容。那么&#xff0c;抖音矩…

微信支付配置完整操作手册

微信支付配置 必须申请开通微信支付 微信支付官方地址&#xff1a;https://pay.weixin.qq.com/index.php/core/home/login?return_url%2F 申请指引&#xff1a;https://pay.weixin.qq.com/index.php/public/bare_applyment/login4bank 百度经验&#xff1a;https://jingyan.b…