JavaSE入门---认识运算符

文章目录

  • 算术运算符
  • 关系运算符
  • 逻辑运算符
  • 位运算符
  • 移位运算符
  • 条件运算符
  • 运算符的优先级

计算机的最基本的用途之一就是执行数学运算,运算过程中就会用到运算符,那什么是运算符呢? 即:对操作数进行操作的符号,不同运算符操作的含义不同

算术运算符

1.基本四则运算符

		// + - * / %int a = 20;int b = 10;System.out.println(a+b);  //30System.out.println(a-b);  //10System.out.println(a*b);  //200System.out.println(a/b);  //2System.out.println(a%b);  //0  %相当与数学中求除法的余数

注:

  1. 都是二元运算符,使用时必须有左右俩个操作数。
  2. int / int 的结果还是int 并且会向下取整。
  3. 做除法和取模时,右操作数不能为0
  4. % 不仅可以对整型取模,也可以对double类型取模,但是没有意义,一般都是对整型取模。
  5. 俩侧操作数类型不一致时,会类型提升(向类型大的提升)

2.增量运算符

// += -= /= %=int a = 20;a += 10;        // a = a + 10;  30int b = 20;b -= 10;        // b = b - 10;  10int c = 20;c /=10;        // c = c / 10;  2int d = 20;d %=10;        // d = d % 10;  0

注: 只有变量才可以使用该类运算符,常量不能使用。

3.自增/自减运算符

// ++ --int a = 1;a++;        // a = a + 1;int b = 1;++b;        // b = b + 1;int c = 1;c--;        // c = c - 1;int d = 1;--d;        // d = d - 1;

注:

  1. 如果单独使用 前置++ 和 后置++ 没有任何区别
  2. 如果混合使用 前置++ 先+1 再使用变量+1之后的值,后置++ 先使用变量原来的值 表达式结束后再给变量+1
  3. 只能给变量使用,常量不能使用。

关系运算符

		// == != < > <= >=  其运算结果只能是true或者falseint a = 20;int b = 10;System.out.println(a==b);    // falseSystem.out.println(a!=b);    // trueSystem.out.println(a<b);     // falseSystem.out.println(a>b);     // trueSystem.out.println(a<=b);    // falseSystem.out.println(a>=b);    // true

注: 需要多次判断时不能连着写。比如: 不能写 3 < a < 4 因写为 a > 3 && a < 4

逻辑运算符

1.逻辑与 &&(相当于且)
语法规则: 表达式1 && 表达式2 左右表达式必须是boolean类型的结果
含义:只有俩个表达式都为真,结果才为真。只要有一个表达式为假,结果就是假。
在这里插入图片描述

		int a = 1;int b = 2;System.out.println(a==1 && b==2);  // trueSystem.out.println(a>1 && b<5);    // falseSystem.out.println(a>1 && b>5);    // false

2.逻辑或 || (相当于或)
语法规则:表达式1 || 表达式2 左右表达式必须是boolean类型的结果。
含义:只有俩个表达式都为假,结果才为假。只要有一个表达式为真,结果就是真。
在这里插入图片描述

		int a = 1;int b = 2;System.out.println(a>1 || b>5);    // falseSystem.out.println(a==1 || b>5);   // trueSystem.out.println(a>1 || b<5);    // true

3.逻辑非 !
语法规则: !表达式
含义:真变假,假变真
在这里插入图片描述

		int a = 1;int b = 2;System.out.println(!(a==1));  // falseSystem.out.println(!(a>1));   // true

注:

  1. 对于&&,如果左侧表达式值为false,则表达式结果一定为false,不需要计算右侧表达式。
  2. 对于||, 如果左侧表达式值为true, 则表达式结果一定为true, 不需要计算右侧表达式。

位运算符

Java中数据存储的最小单位是字节,而数据操作的最小单位是比特位。每个比特位存储一位二进制数字。
位操作表示按二进制位运算。

1.按位与 &
含义:如果两个二进制位都是1,则结果为1,否则结果为0;

		int a = 10;int b = 20;System.out.println(a & b);

在这里插入图片描述
2.按位或 |
含义:如果两个二进制位都是0,则结果为0,否则结果为1;

		int a = 10;int b = 20;System.out.println(a | b);

在这里插入图片描述
3.按位取反 ~
含义:如果该位为0,则转为1.如果该位为1,则转为0;

		int a = 10;int b = 20;System.out.println(~a);

在这里插入图片描述
4.按位异或 ^
含义:如果两个数字的二进制位相同,则结果为0,否则结果为1;

		int a = 10;int b = 20;System.out.println(a^b);

在这里插入图片描述

移位运算符

按照二进制比特位来运算的;

1.<< 左移一位
含义:左移一位,右侧补0
:向左移时丢弃的是符号位,数字可能由整数变为负数,由负数变为整数

 		int a = 1;System.out.println(a<<1);

在这里插入图片描述
2.>> 右移一位
含义:右移一位,左侧补符号位

		int a = 1;int b = -1;System.out.println(a>>1);System.out.println(b>>1);

在这里插入图片描述
3.>>> 无符号右移
含义:右移一位,左侧补0

		int a = 1;System.out.println(a>>>1);

在这里插入图片描述

注:

  1. 左移一位相当于原数字*2 左移N位相当于原数字*2^N
  2. 右移一位相当于原数字/2 右移N位相当于原数字/2^N
  3. 计算机中移位运算效率高于乘除运算

条件运算符

语法规则:表达式1 ? 表达式2 :表达式3
含义:如果表达式1结果为真,则最终结果为表达式2.如果表达式1结果为假,则最终结果为表达式3.

        int a = 10;int b = 20;int max = (a > b) ? a : b;     // max = 20

注: 条件运算符只有一个,也是Java中唯一的一个三目运算符。

运算符的优先级

在一条表达式中,各个运算符可以混合使用,但是运算符的优先级不同。有些情况下会带来很大的麻烦。表达式优先级层级较多、数量也不少,因此,我特地重新归纳整理了一次巧记版本。点击此处查看:巧记运算符优先级
在这里插入图片描述

注: 我们平时在写代码时如果遇到运算符优先级不确定的情况时,在有可能由歧义的代码中加括号即可。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DevicData-D-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复

引言&#xff1a; 网络犯罪分子采用越来越复杂和具有破坏性的方式威胁着我们的数字安全。本文将深入介绍DevicData-D-XXXXXXXX勒索病毒的特点&#xff0c;提供关于如何应对被其加密的数据文件的恢复方法&#xff0c;并分享一些预防措施&#xff0c;以帮助您保护自己免受这一数字…

人工智能时代大模型算法之文心大模型4.0

大家好&#xff0c;我是爱编程的喵喵。双985硕士毕业&#xff0c;现担任全栈工程师一职&#xff0c;热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。…

R语言进度条:txtProgressBar功能使用方法

R语言进度条使用攻略 在数据处理、建模或其他计算密集型任务中&#xff0c;我们常常会执行一些可能需要很长时间的操作。 在这些情况下&#xff0c;展示一个进度条可以帮助我们了解当前任务的进度&#xff0c;以及大约还需要多长时间来完成&#xff0c;R语言提供了几种简单且灵…

强大的下载管理器:Progressive Downloader for Mac

Progressive Downloader for Mac是一种强大的下载管理器&#xff0c;它可以帮助用户更快速、更稳定地下载文件。相比于其他下载工具&#xff0c;PD下载管理器具有很多独特的功能和优势&#xff0c;本文将对其进行详细推广。 在数字化时代&#xff0c;下载已成为我们日常工作中必…

PCL 坡度滤波算法地面分割(C++详细过程版)

目录 一、算法原理1、实现流程2、参考文献二、代码实现三、结果展示一、算法原理 1、实现流程 1、格网示意图 2、计算格网行列数 公式中的特殊符号为向上取整,

STM32CUBEMX_DMA串口空闲中断接收+接收发送缓冲区

STM32CUBEMX_DMA串口空闲中断接收接收发送缓冲区 前言&#xff1a; 我了解的串口接收指令的方式有&#xff1a;在这里插入图片描述 1、接收数据中断特定帧尾 2、接收数据中断空闲中断 3、DMA接收空闲中断 我最推荐第三种&#xff0c;尤其是数据量比较大且频繁的时候 串口配置 …

Stm32_标准库_14_串口蓝牙模块_解决手机与蓝牙模块数据传输的不完整性

由手机向蓝牙模块传输时间信息&#xff0c;Stm32获取信息并将已存在信息修改为传入信息 测试代码&#xff1a; #include "stm32f10x.h" // Device header #include "Delay.h" #include "OLED.h" #include "Serial.h"uint16_t num…

索尼PS5 Pro将搭载RDNA 3定制GPU 拥有30个WGP/60个CU,频率更高

此前有报道称&#xff0c;PlayStation 5 Pro已进入开发最后阶段&#xff0c;其内部代号为“Trinity”&#xff0c;搭载的SoC对应代号为“Viola”&#xff0c;遵循了索尼使用《黑客帝国》人物名字作为代号的做法。 近日&#xff0c;RedGamingTech透露&#xff0c;索尼PlayStatio…

vscode配置c++和opencv环境

因为想要用c刷题&#xff0c;但是之前的vs被重装的时候删除了&#xff0c;DEVc实在是不好看的界面&#xff0c;于是就想起了之前写html的vscode&#xff0c;没想到配置环境花了一整天&#xff0c;还总是报错&#xff0c;也许是电脑配置不一样&#xff0c;所以就出了问题吧&…

ubuntu20.04 nerf开山之作

源码 GitHub - yenchenlin/nerf-pytorch: A PyTorch implementation of NeRF (Neural Radiance Fields) that reproduces the results. 代码的相关解读 NeRF代码解读-相机参数与坐标系变换 - 知乎 原文题目&#xff1a;NeRF: Representing Scenes as Neural Radiance Field…

leetcode-200. 岛屿数量

1. 题目 leetcode题目链接 2. 解答 思路&#xff1a; 需要循环遍历每个节点&#xff1b;找到陆地&#xff0c;基于陆地开始遍历陆地的上下左右&#xff1b;数组dirm dirn就可以表示某个区域的上下左右&#xff1b;标记遍历过的节点&#xff1b;设计循环的退出条件&#xf…

【Django 01】环境搭配与项目配置

1. 介绍 https://github.com/Joe-2002/sweettalk-django4.2#readme Django 是一个使用 Python 编写的开源 Web 应用程序框架&#xff0c;它提供了一套用于快速开发安全、 可扩展和高效的 Web 应用程序的工具和功能。Django 基于 MVC&#xff08;Model-View-Controller&#xf…