150天打卡day04_运算符
数学运算符
逻辑运算符
关系运算符
赋值运算符
字符串拼接运算符
三目运算符
小可爱们复习完昨天讲过的内容后,咱们今天要学一个新的知识点叫运算符,Java领域中包含的运算符有数学运算符、关系运算符、逻辑运算符、赋值运算符等。
那么什么是运算符呢?运算符其实是计算机中的一种符号,可以用来告诉计算机执行特定的数学或逻辑操作的符号。说的罗里吧嗦的到底什么意思呢?就是计算机本质是只能处理数字的,数字中运算的各种符号例如加减乘除括号等等我们就叫做运算符。
运算符的由来
我们知道数字是印度人发明的,而通过阿拉伯人传播的,运算符是古希腊人和印度人一起发明的。他们表示+、-都是把两个数字写在一起表示加法,把两个数字写得分开一些来表示减法。
中世纪后期,欧洲商业逐渐发达。一些商人常在装货的箱子上画一个“+”,表示重量超过一些;画一个“-”,表示重量略微不足。文艺复兴时期,有一个老头,这个老头你们都认识,猜猜是谁?意大利的艺术大师达•芬奇在他的一些作品中也采用过“+”和“-”的记号。经过数学家韦达的大力宣传和提倡,这两个符号才开始普及,到1603年终于获得大家的公认。
下面是运算符的一个图表,给大家简单介绍一下,大家不用背哈,用到了自然也就会了。

运算符学习要点
学运算符之前呢咱们要掌握以下:
按照参与运算元素的个数分为:单元、双元、三元运算
单元运算:a++
双元运算:a+b
三元运算符:running ? a:b
优先级:优先级高的运算符先进行计算
括号级别最高,其次是单元运算,双元运算(先乘除后加减)、三元运算和赋值运算最低
结合性:相同优先级的按照结合顺序进行计算,双目运算从左到右
顺序调整:可以利用()调整运算的顺序,建议按照人能理解的顺序添加括号
刚刚大家已经了解了什么是运算符,以及运算符的一些要点
接下来由我们来学习今天的第一种运算符,也就是数学运算符.
Java算数运算符包括:加(+)、减(-)、乘(*)、除(/)、取模运算(%)、自增(++)、自减(--)。
1、四则运算
加(+)、减(-)、乘(*)、除(/)也称为四则运算是最常⻅的数学运算,运算规则与数学中的数学运算基本一样,但是也有一些细 微区别。一样的规则这里就不再复述,这里主要讨论一些不同之处:
相同数据类型参与数学运算,得到相同类型的结果,整数除法得到整数结果
参与数学运算的数据类型不一致的时候,就近自动数据类型转换,转换为相同类型再进行计算
byte、short、char类型按照int类型计算
计算结果超过数据类型范围会溢出
Java中,对于不需要任何准确计算精度的数字可以直接使用float或double运算,但是如果需要精确计算的结果,例如商业应用,则必须使用BigDecimal类,而且使用BigDecimal类也可以进行大数的操作。减法应用和数学一样。
实现两个数值相除的结果,例如:
2、取余运算
取模运算(%)意思是取余数,可以用在 整数、char类型和浮点数中使用。取余数计算其意义就是计算获得除法计算的余数。在日常生活中其余数计算不常用,但是 在计算机编程中,余数计算经常被用到。下面就讨论一下余数计算的特点,正是因为这些特 点,余数计算才经常被使用。
数学除法:

余数计算:

除数是正数的时候余数的运算规律:
被除数是正数时候余数是介于0到除数之间的数,比如:除数3则余数是0,1,2之一,范围是【0,3)
如果被除数是0,1,2,3.....则余数是周期函数,如:除数3则余数就是0,1,2,0,1,2.......
如果被除数是负数,除数是3则其余数范围是:(-3,0】
负数作为被除数或者除数的情况在工作中很少用,但是在考试中有出现。
开发中余数的用途:
控制计算结果的范围,比如控制计算结果是3以内的数,就对3取余数就行了
控制周期性的运算:比如”发牌“,周期循环动画
3、自增自减运算
Java的自增运算符(++)和自减运算符(--)继承自C++,自增、自减运算就是将当前变量的值增加1或者减少1。
传统数学计算中是不存在自增或 者自减运算的,由于软件开发中经常需要按照次序连续处理数据,计算机专家们按照自己的使 用习惯设计了自增自减运算。这些运算经常用于在开发编码中,可以使用的程序编码变的非常 干练简洁。自增运算、自减运算符号是++、--,是单元运算,也就是说一个操作元素参与运 算,其基本运算规则是将参与运算的变量增加或者减少1。
a++:代表 先赋值 (先将a的值作为a++的值) 后运算 (+1)
++a: 代表 先运算(先将变量的值+1) 后赋值 (然后将+1后的值赋值给表达式)

按照写法可以分为4种情况:
i++ 称为“后加加”: 先取变量i的值作为 i++ 整体表达式的值,再将i的值增加1
假设运算前i=1,则运算后 i++ 为1 ,i为2
++i 称为“先加加”:先将i的值增加1,再取变量i的值作为 ++i 整体表达式的值
假设运算前i=1,则运算后 ++i 为2 ,i为2
i-- 称为“后减减”:先取变量i的值作为 i-- 整体表达式的值,再将i的值减少1
假设运算前i=1,则运算后 i-- 为1 ,i为0
--i 称为“先减减”:先将i的值减少1,再取变量i的值作为 --i 整体表达式的值
假设运算前i=1,则运算后 --i 为0 ,i为0
二、关系运算符
关系运算符用于比较数值的大,小,相等关系,Java关系运算符和数学上的关系运算规则类似,在开发中用于判断数据的大小以及是否相等,包括六个运算符:
大于(>)、小于(<)
大于等于(>=)、小于等于(<=)
等于(==)、不等于(!=)
运算结果是boolean类型,如果成立就为true,不成立就为false
逻辑运算建立在关系运算的基础之上,逻辑运算包括: 与(&&)、或(||)、非(!)
参与运算的变量或者表达式,包括最后的运算结果都 boolean类型
1、使用 &&(与) 运算符
两个boolean变量参与 && 运算时,两个变量都为true,结果才为true,否则结果为false。
适用场景
所以逻辑与表达得是并且的关系,两边都为真则为真,见false则false
2、使用 || (或)运算符
两个boolean变量运算时,当一个变量值为true时,结果为true,两个都为false时结果为false
适用场景:
还有就是我们去饭店吃饭的时候,要结账了,我们没有带现金,用微信能不能结账 能,再假设,我微信没有钱,我用支付宝能不能结,也能
所以 逻辑或,有一边为真则为真,见true则true
3、使用 ! 运算符
! 运算只会有一个boolean变量参与运算, 运算后的值与该变量相反
简单来说就是变量为true时结果为false,变量为false时结果为true
例如:
经典案例:判断闰年问题
闰年是比普通年份多出一段时间的年份,目的是为了弥补人为规定的纪年与地球公转产产生
的差异。
回归年:365天5时48分46秒 ,就是太阳直射点来回的周期,也就是通常说的一年
目前使用的格里高利历闰年规则如下:
公元年份除以4可整除但除以100不可整除,为闰年。
公元年份除以400可整除,为闰年。
前面学习内容中想对变量赋值,所赋之值都是一个固定的值,像int a=1; int b = 25;而很多时候想给变量赋的值并非是一个固定的值,比如,用户输入的值是几,就给变量赋值为几,这样的情况可以借助于Scanner类实现,使用步骤如下:
1. 在package下:
导入Scanner ApI:import java.util.Scanner
2. 在main()中:创建Scanner对象:Scanner sc =new Scanner(System.in);
3. 在第2步骤之下:调用方法获取用户输入的信息:int year = console.nextInt();
next()通常接收连续字符串,如果有空格只输出第一连续字符
nextLine()接收一整行
四、赋值运算符
1、使用 = 进行赋值运算
= 称为赋值运算符,用来对变量赋值。赋值表达式除了可以将右边的表达式计算出来赋给左边以外,其本身也有值,本身就是所赋之值
2、复合运算符
扩展赋值表达式就是在赋值表达式 = 前加上其他运算符。
包括:+=、-=、*=、/=、%=
需要注意的是,扩展赋值表达式包含强制类型转换。
如果加号两侧都是数值就是数值加法
如果加号的一侧出现了字符串,就按照字符串连接运算计算
字符串连接的时候,会将不是字符串的数据转换为字符串再进行连接

六、三元运算符
三元运算符也称为“条件运算符”或者“条件表达式”,其本质上是一种简化版的条件判断
语句。因为其简方便在开发中经常被使用
条件运算符又称为 三目运算符,其结构为: boolean表达式 ? 表达式1:表达式2
? 是格式要求,代表判断条件是否成立.条件运算符的规则如下:
先计算boolean表达式
如果boolean表达式的值为true,整个表达式的值为表达式1的值
如果boolean表达式的值为false,整个表达式的值为表达式2的值

案例:将计算闰年的逻辑运算改成三目运算
