七、运算符

运算符

  • 1.运算符
    • 1.1.赋值运算符
    • 1.2.算数运算符
    • 1.3.自增和自减运算符
    • 1.4.比较运算符
    • 1.5.逻辑运算符
    • 1.6.位运算符
      • 1.6.1.按位与运算
      • 1.6.2.按位或运算
      • 1.6.3.按位取反运算
      • 1.6.4.按位异或运算
      • 1.6.5.移位操作
      • 1.6.6.复合赋值运算符
      • 1.6.7.三元运算符
      • 1.6.8.运算符优先级
    • 1.7.训练1
    • 1.8.训练2

——————————————————————————————————————————————————

1.运算符

运算符是一些特殊的符号,主要用于数学函数、一些类型的赋值语句和逻辑比较方面。Java中提供了丰富的运算符,如赋值运算符、算术运算符、比较运算符等。

——————————————————————————————————————————————————

1.1.赋值运算符

赋值运算符以符号“=”表示,它是一个二元运算符(对两个操作数做处理),其功能是将右方操作数所含的值赋给左方的操作数。例如:

    int a = 100;

该表达式是将100赋值给变量a。左方的操作数必须是一个变量,而右边的操作数则可以是任何表达式,包括变量(如a、number)、常量(如123、‘book’)、有效的表达式(如45 * 12)。

例如:使用赋值运算符同时为两个变量赋值。

在项目中创建类Eval,在主方法中定义变量,使用赋值运算符为变量赋值。

在这里插入图片描述
在这里插入图片描述
忘了说快捷指令
创建完类后。快捷输入main()方法
psvm回车等同于:public static void main(String[] args) {}
在这里插入图片描述
sout回车等同于:System.out.println();
在这里插入图片描述

sout无法输入指令报错的话。设置下。
在这里插入图片描述
在这里插入图片描述

说明:在Java中可以把赋值运算符连在一起使用。如:

    x = y =z = 5;

在这个语句中,变量x、y、z都得到同样的值5,但在实际开发中建议开发者分开对其进行赋值,这样可以让代码的层次更清晰。

——————————————————————————————————————————————————

1.2.算数运算符

Java中的算术运算符主要有+(加)、-(减)、*(乘)、/(除)、%(求余),它们都是二元运算符。

在这里插入图片描述

其中 + 和 - 运算符还可以作为数值的正负符号,如+5,-7。

注意:在进行除法运算时,0不能做除数,如int a = 5 /0;系统会抛出ArithmeticException异常。

在这里插入图片描述
在这里插入图片描述

下面通过一个小程序来介绍算术运算符的使用方法。

例:使用算术运算符模拟计算器。

创建ArithmeticOperator类,让用户输入两个数字,分别用5种运算符对这两个数字进行计算。

在这里插入图片描述
在这里插入图片描述

代码中出现的Scanner扫描器类可以让程序获得用户在控制台输入的值。关于扫描器后续会详细介绍。

——————————————————————————————————————————————————

1.3.自增和自减运算符

自增、自减运算符是单目运算符,可以放在操作元之前,也可以放在操作元之后。操作元必须是一个整型或浮点型变量。

自增、自减运算符的作用是使变量的值增1或减1。放在操作元前面的自增、自减运算符,会先将变量的值加1(减1),然后使该变量参与表达式的运算。放在操作元后面的自增、自减运算符,会先使变量参与表达式的运算,然后将该变量加1(减1)。

例如:

    ++a(--a)  //表示在使用变量a之前,先将a的值加(减)1a++(a--)  //表示在使用变量a之后,将a的值加(减)1

粗略的分析,“++a”与“a++”的作用都相当于a = a + 1。

假设a = 4; 则:

    b = ++a;   //先将a的值加1,然后赋给b,此时a值为5,b值为5。

在看另外一个,同样假设a = 4; 则:

    b = a++;   //先将a的值赋给b,再将a的值加1,变为5,此时a值为5,b值为4。

——————————————————————————————————————————————————

1.4.比较运算符

比较运算符属于二元运算符,用于程序中的变量之间、变量和自变量之间以及其他类型的信息之间的比较。比较运算符的运算结果是boolean型。当运算符对应的关系成立时,运算结果为true,否则为false。所有比较运算符通常作为判断的依据用在条件语句中。比较运算符共有6个。

在这里插入图片描述

例如:使用不同的比较运算符判断两个整数的关系。

在项目中创建类Compare,在主方法中创建整型变量,使用比较运算符对变量进行比较运算,并输出运算后的结果。

在这里插入图片描述
输出的结果:
4>5 = false
4<5 = true
4==5 = false
4!=5 = true
4>=5 = false
4<=5 = true

在这里插入图片描述

——————————————————————————————————————————————————

1.5.逻辑运算符

返回类型为布尔型的表达式(如比较运算符)可以被组合在一起构成一个更复杂的表达式。这是通过逻辑运算符来实现的。逻辑运算符包括&(&&)(逻辑与)、||(逻辑或)、!(逻辑非)。逻辑运算符的操作元必须是boolean型数据。在逻辑运算符中,除了“!”是一元运算符,其他都是二元运算符。

在这里插入图片描述

结果为boolean型的变量或表达式可以通过逻辑运算符组合为逻辑表达式。用逻辑运算符进行逻辑运算时,结果如下所示。

在这里插入图片描述
与或非在数据库里也有说明
与:and
或:or
非:not

与:同真为真,一假则假;
或:同假才假,一真即真;
非:非真即假,非假即真。

逻辑运算符“&&”与“&”都表示“逻辑与”当两个表达式都为true时,“逻辑与”的结果才会是true。

使用逻辑运算符“&”会判断两个表达式;

而逻辑运算符“&&”则是针对boolean类型的类进行判断的。当第一个表达式为false时则不去判断第二个表达式,直接输出结果,从而节省计算机判断的次数。

通常将这种在逻辑表达式中从左端的表达式可推断出整个表达式的值的情况称为“短路”,而将那些始终需要执行逻辑运算符两边的表达式才能推断出整个表达式的值的情况称为“非短路”。

“&&”属于“短路”运算符,而“&”属于“非短路”运算符。

例:使用不同的比较运算符判断两个整数的关系。

在项目中创建类Calculation,在主方法中创建3个整数,分别记录男生人数、女生人数和总人数,使用逻辑运算符来判断“男生人数大于女生人数并且总人数大于30人”和“男生人数大于女生人数或者总人数大于30人”这两种情况是否存在。

在这里插入图片描述

与和或,类似满足条件。

&&条件必须满足2个逻辑计算。男孩人数不大于女孩人数,所以返回值为false。
||条件满足任意其中1个逻辑计算。男孩人数不大于女孩人数,但总人数是大于30,所以返回true。

在这里插入图片描述

这里在说下&和&&,&会判断2个表达式。boys > girls) && (sum > 30),第一个不满足还会继续判断第二个。而&&判断第一个不满足后,不会去判断第二个直接输出结果。

——————————————————————————————————————————————————

1.6.位运算符

位运算符除“按位与”和“按位或”运算符外,其他只能用于处理整数的操作数,包括byte、short、char、int和long等数据类型。位运算是完全针对位方面的操作。

整型数据在内存中以二进制的形式进行表示,如int型变量7的二进制表示是:
00000000 00000000 00000000 00000111。 右边第一个1是1,第二个是2,第三个是4。4+2+1=7。

左边最高位是符号位,最高位是0表示正数,若为1则表示负数。负数采用补码表示。

如-8的二进制表示为111111111 111111111 1111111 11111000。这样就可以对整型数据进行按位运算。

在这里插入图片描述

——————————————————————————————————————————————————

1.6.1.按位与运算

“按位与”运算的运算符为“&”,为双目运算符。

“按位与”运算的运算法则是:如果两个整型数据a、b对应位都是1,则结果位才是1,否则为0。

如果两个操作数的精度不同,则结果的精度与精度高的操作数相同。如上图所示。

在这里插入图片描述

与的结果。1和1=1,0和0=0,1和0=0

5的二进制和-4的二进制与的结果就是十进制的数字4。

——————————————————————————————————————————————————

1.6.2.按位或运算

“按位或”运算的运算符为“|”,为双目运算符。“按位或”运算的运算法则是:如果两个操作数对应位都是0,则结果位才是0,否则为1。

如果两个操作数的精度不同,则结果的精度与精度高的操作数相同。如图:

在这里插入图片描述

在这里插入图片描述
或的结果。1或0=1,1或1=1,1或0=1,0或0=0。

3的二进制和6的二进制或后得出十进制7。

——————————————————————————————————————————————————

1.6.3.按位取反运算

按位取反”运算也称“按位非”运算,运算符为“~”,为单目运算符。“按位取反”就是将操作数二进制中的1修改为0,0修改为1。

在这里插入图片描述

在这里插入图片描述
取反~,0修改1,1修改0。结果等于= -8

——————————————————————————————————————————————————

1.6.4.按位异或运算

“按位异或”运算的运算符是“^”,为双目运算符。“按位异或”运算的运算法则是:当两个操作数的二进制表示相同(同时为0或同时为1)时,结果为0,否则为1。

若两个操作数的精度不同,则结果的精度与精度高的操作数相同。

在这里插入图片描述

在这里插入图片描述

^运算,1和0=1,0和0=0,1和1=0。结果=9。

——————————————————————————————————————————————————

1.6.5.移位操作

除了上述运算符,还可以对数据按二进制位进行移位操作。Java中的移位运算符有以下3种:

在这里插入图片描述

左移就是将运算符左边的操作数的二进制数据,按照运算符右边操作数指定的位数向左移动,右边移空的部分补0。

右移则复杂一些。当使用“>>”符号时:如果最高位是0,右移空的位就填入0;如果最高位是1,右移空的位就填入1。

在这里插入图片描述
在这里插入图片描述

左移:移空的地方补0,左移最高位多的1被丢弃。
右移:最高位是1,右移结果前面填入1,右移多的0被丢弃。假如最高位是0,那么则填0。

技巧:

移位可以实现整数除以或乘以2n的效果。例如:
y << 2与y*4的结果相同。

在这里插入图片描述
y >> 1的结果与y / 2的结果相同。

在这里插入图片描述

总之:一个数左移n位,就是将这个数乘以2n;一个数右移n位,就是将这个数除以2n。

——————————————————————————————————————————————————

1.6.6.复合赋值运算符

和其他主流编程语言一样,Java中提供了复合赋值运算符。所谓复合赋值运算符,就是将赋值运算符与其他运算符合并成一个运算符来使用,从而同时实现两种运算符的效果。Java中的复合运算符如下所示:

在这里插入图片描述

以“+=”为例,虽然“a += 1”与“a = a + 1”二者最后的计算结果是相同的,但是在不同的场景下,两种运算符都有各自的优势和劣势:

低精度类型自增

在Java编译环境中,整数的默认类型时int型,因此下面的赋值语句会报错:

    byte a = 1;        //创建byte型变量aa = a + 1;         //让a的值+1,错误提示:无法将int型转换为byte型

在没有进行强制转换的条件下,a+1的结果是一个int值,无法直接赋给一个byte变量。

在这里插入图片描述
在这里插入图片描述

但是如果使用“+=”实现递增计算,就不会出现这个问题。

在这里插入图片描述
在这里插入图片描述

不规则的多值相加

“+=”虽然简洁、强大,但是有些时候是不好用的,比如下面这个语句:

    a = (2 + 3 - 4)*92/6;

这条语句如果改成使用复合赋值运算符,代码就会显得比较烦琐,代码如下:

    a += 2;a += 3;a -= 4;a *= 92;a /= 6;

——————————————————————————————————————————————————

1.6.7.三元运算符

三元运算符的使用格式如下:

    条件式 ? 值1 :值2

三元运算符的运算法则是:若条件式的值为true,则整个表达式取值1,否则取值2。

    boolean b = 20 < 45 ? true : false;

上述程序表达式“20 < 45”的运算结果返回真,那么boolean型变量b取值为true。相反,如果表达式的运算结果返回为假,则boolean型变量b取值为false。

三元运算符等价于if…else语句,例如上述代码等价于:

boolean a;         //声明boolean型变量
if (20 < 45)       //将20<45作为判断条件a = true;      //条件成立,将true赋值给a
elsea = false;     //条件不成立,将false赋值给a

——————————————————————————————————————————————————

1.6.8.运算符优先级

ava中的表达式就是使用运算符连接起来的符合Java规则的式子。运算符的优先级决定了表达式中运算执行的先后顺序。通常,优先级由高到低的顺序依次是:

增量和减量运算
算术运算
比较运算
逻辑运算
赋值运算

如果两个运算有相同的优先级,那么左边的表达式要比右边的表达式先被处理。

在这里插入图片描述

在编写程序时尽量使用圆括号来指定运算次序,以免产生错误的运算顺序。

——————————————————————————————————————————————————

1.7.训练1

现有一辆轿车用了8.7秒从每小时0千米加速到每小时100千米,计算并输出这辆轿车的平均加速度。

思路:平均加速度的公式:平均加速度=(末速度-初速度)/这段时间

——————————————————————————————————————————————————

1.8.训练2

求解二元一次方程组 使用克莱姆法则求解二元一次方程组。

在这里插入图片描述
提示:克莱姆法则求解二元一次方程组的公式如下:

在这里插入图片描述

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

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

相关文章

win系统环境搭建(九)——Windows安装chatGPT

windows环境搭建专栏&#x1f517;点击跳转 win系统环境搭建&#xff08;九&#xff09;——Windows安装chatGPT 本系列windows环境搭建开始讲解如何给win系统搭建环境&#xff0c;本人所用系统是腾讯云服务器的Windows Server 2022&#xff0c;你可以理解成就是你用的windows…

上位机在自动化控制中的作用和优势是什么?

上位机在自动化控制中的作用和优势是什么&#xff1f; 自动化控制编程领域包括单片机、PLC、机器视觉和运动控制等方向。输入“777”&#xff0c;即刻获取关于上位机开发和数据可视化的专业学习资料&#xff0c;近年来&#xff0c;上位机编程逐渐兴起&#xff0c;正在逐步替代…

亚马逊、敦煌网、国际站自养号测评需要哪些资源与技术门槛?

测评服务商说的天花乱坠&#xff0c;实际真假难辨&#xff0c;FB等社交软件自找测评犹如大海捞针。产品都要上架了&#xff0c;靠谱的测评服务还是没找到&#xff0c;亚马逊测评求人不如求己&#xff0c;今天来教你怎么养一批安全、可控的买家号。 亚马逊等跨境平台测评自养号…

【运维篇】三、SLF4J与Logback

文章目录 0、Java的门面设计模式1、SLF4J2、作用3、调试4、SpringBoot采用SLF4JLogback5、切换SpringBoot的日志框架6、logback的配置加载7、logback的配置组成8、logback之logger9、logback之appender10、logback之pattern11、appender的Filter12、logback.xml全解释13、logba…

【校招VIP】测试方案之测试需求分析

考点介绍&#xff1a; 需求分析就是要弄清楚用户需要的是什么功能&#xff0c;用户会怎样使用系统。这样我们测试的时候才能更加清楚的知道系统该怎么样运行&#xff0c;才能更好的设计测试用例&#xff0c;才能更好的测试。 测试方案之测试需求分析-相关题目及解析内容可点击…

Qt事件处理

1. 事件 众所周知Qt是一个基于C的框架&#xff0c;主要用来开发带窗口的应用程序&#xff08;不带窗口的也行&#xff0c;但不是主流&#xff09;。我们使用的基于窗口的应用程序都是基于事件&#xff0c;其目的主要是用来实现回调&#xff08;因为只有这样程序的效率才是最高…

优化系统报错提示信息,提高人机交互(一)

1、常规报错及处理 package com.example.demo.controller;import com.example.demo.service.IDemoService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.w…

机器视觉应用系统包括哪些硬件?

导语&#xff1a;机器视觉是一个软硬件相结合的综合技术&#xff0c;需要软件对图像做处理&#xff0c;也需要硬件提供稳定和高质量的图像&#xff0c;两者同样重要。作为开发&#xff0c;软件模块比较熟悉&#xff0c;硬件系统的相关知识储备弱一些&#xff0c;本文对机器视觉…

卷运维不如卷网络安全

最近发现很多从事运维的选择了辞职&#xff0c;重新规划自己的职业发展方向。运维工程师这个岗位在IT行业里面确实是处于最底层的&#xff0c;不管什么环节出现问题&#xff0c;基本都是运维背锅。背锅也就罢了&#xff0c;薪资水平也比不上别的岗位。 一般运维的薪资水平大多数…

LeetCode 2596. 检查骑士巡视方案【数组,模拟】1448

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…

云计算的未来:云原生架构和自动化运维的崭露头角

文章目录 云原生架构&#xff1a;重新定义应用开发和部署什么是云原生架构&#xff1f;为什么云原生架构重要&#xff1f;1. 弹性和伸缩性2. 故障隔离3. 更快的交付4. 资源利用率5. 多云支持 云原生架构的实践步骤 1&#xff1a;容器化步骤 2&#xff1a;微服务步骤 3&#xff…

JavaWeb后端开发 JWT令牌解析 登录校验 通用模板/SpringBoot整合

目录 实现思路 相关技术的解析 ​编辑会话跟踪三个方案 JWT令牌技术 ​生成令牌 校验令牌 登录下发令牌 实现思路 通过登录成功的标记来检测,在每个接口前做一个标记判断是否登录,若没登录则返回错误信息,并使前端退出.但这样较为繁琐,因此我们可以通过一种统一拦截的技…

R语言-关于颜色

目录 颜色 示例 R 颜色板 参考&#xff1a; 颜色 什么场景会用到颜色&#xff1f;比如在绘图过程中&#xff0c;为了让图更好看&#xff0c;有的时候&#xff0c;需要选择使用不同的颜色进行绘制或者填充。本文提供了R颜色的相关参数。 在R中&#xff0c;可以通过颜色下标…

Flask框架-1-[群聊]: flask-socketio实现websocket的功能

一、项目结构 flask_websocket |---static |---js |---jquery-3.7.0.min.js |---socket.io_4.3.1.js |---templates |---home |---group_chat.html |---index.html |---app.py 1.1、python环境 python3.9.0 1.2、依赖包 Flask2.1.0 eventlet0.33.3 Flask-SocketIO5.3.4 1.…

gpt扣款失败,openai扣款失败无法使用-如何解决gpt扣款失败的问题?

gpt扣款失败&#xff0c;openai扣款失败无法使用。毕竟你花了钱却无法使用你所期待的服务&#xff0c;这种情况确实令人不快。但是&#xff0c; 为什么gpt扣款失败&#xff1f; 可能是由于支付问题导致的扣款失败。这包括信用卡额度不足、支付信息错误等等。如果你的支付信息…

NI SCXI-1520 控制主板模块

NI SCXI-1520 是 National Instruments&#xff08;NI&#xff09;生产的控制主板模块&#xff0c;通常用于 NI 的 SCXI&#xff08;Signal Conditioning eXtensions for Instrumentation&#xff09;模块化测量和控制系统中&#xff0c;以实现信号调理、数据采集和控制。以下是…

问道管理:机器人产业迎催化 黄金价格或将突破前高

昨日&#xff0c;沪指盘中震动下探&#xff0c;一度跌近1%逼近3100点&#xff0c;尾盘逐步止跌&#xff1b;深成指、创业板指均跌超1%。截至收盘&#xff0c;沪指跌0.45%报3123.07点&#xff0c;深成指跌1.14%报10255.87点&#xff0c;创业板指跌1.14%报2027.73点&#xff0c;科…

全局异常处理器@RestControllerAdvice解析 Springboot项目异常处理 JavaWeb @ExceptionHandler

RestControllerAdvice public class GlobalExceptionHandler {ExceptionHandler(Exception.class)//指定捕获异常类型:所有public Result ex(Exception ex){ex.printStackTrace();return Result.error("对不起,出现异常,请联系管理员");}}RestControllerAdvice注解在…

淘宝商品详情数据采集

淘宝商品详情数据采集的方法如下&#xff1a; 确定采集目标&#xff1a;明确要采集的商品信息&#xff0c;如商品标题、价格、销量、评论、图片等。选择采集工具&#xff1a;可以选择Scrapy框架、Java的WebMagic框架等。编写爬虫程序&#xff1a;进入目标文件夹&#xff0c;输…

起尔正版虚拟商品交易商城源码系统 第三方交易平台网站源码

起尔网正版虚拟商品交易商城源码系统 Thinkct多商户源码系统商城&#xff0c;采用Thinkphp框架打造&#xff0c;后端采用Thinkadmin开发响应速度控制200ms内 起尔网正版虚拟商品交易商城源码系统 - 起尔网起尔网正版虚拟商品交易商城源码系统 Thinkct多商户源码系统商城&#…