广州番禺Python, Java小班周末班培训
第四期线下Java, Python小班周末班已经开课了,培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析, Java中高级工程师培训。授课详情请点击:http://chipscoco.com/?cate=6
5.5.1 理解数据运算
常见的四则运算就是一种数据运算,利用四则运算可以对两个以上的数字作加减乘除。比较两个或多个数值的大小,也是一种数据运算。根据数据运算的不同性质,可以将其分为算数运算,关系运算,逻辑运算。
不论是算数运算还是关系运算,或是其它类型的运算,都是按照特定的逻辑规则对数据进行表示和处理的过程。例如在等式1+1=2中,将两物相加的结果用字符2进行表示。
1+1之所以等于2,是因为我们先有了物物相加的生活经验,然后以数字符号的形式来表示这种算数逻辑的处理过程。
5.5.2 操作符与操作数
简言之,操作符就是表示各类数据运算的符号,例如用符号+表示加法,用符号-表示减法。操作数,就是参与数据运算的数,按其位置顺序,可将操作数分为左操作数和右操作数。例如在算数运算1+2中,数字1与数字2都是操作数,1是左操作数,2是右操作数。
5.5.3 Java中的数据运算
Java中的数据运算主要有赋值运算,算数运算,关系运算,逻辑运算。
(1) 赋值运算
赋值运算是指将值赋予变量的过程。Java中的赋值运算符号是“=”,赋值运算符左边的操作数必须是变量。
代码实例-定义布尔类型变量:
// 定义布尔类型变量is_happy,初始化为true boolean is_happy = true; // 将变量is_happy赋值为false is_happy = false;
(2) 算数运算
算数运算就是加减乘除。Java中的算数运算符:
算数运算符
| 描述 |
+ | 加法运算 |
- | 减法运算 |
* | 乘法运算 |
/ | 除法运算 |
% | 取余运算 |
++ | 自增运算 |
-- | 自减运算 |
代码实例-计算整数各位的和:
/** * @author 薯条老师 * @date 2021-08-17 * @version 1.0 */ public class HelloJava { public static void main(String[] args) { // 定义year变量,值为2020 int year = 2020; // 定义sum变量,用来保存数字各位的和 int sum = 0; // 1. 除以1000,得到千位数 int number = year/1000; // 与千位数相加 sum = sum+number; // 2. 与1000取余,去掉千位数 year = year % 1000; // 除以100,得到百位数 number = year / 100; // 与百位数相加 sum = sum+number; // 3. 与100取余,去掉百位数 year = year % 100; // 除以10,得到十位数 number = year / 10; // 与十位数相加 sum = sum+number; // 4. 与10取余,去掉个位数 year = year % 10; // 除以1,得到个位数 number = year / 1; // 与个位数相加 sum = sum+number; System.out.println(sum); } }代码讲解:
(1)将数字与各数位的基数作整除运算,可以获取当前数位的数字,例如千位数的基数为1000,百位数的基数为100,十位数的基数为10,以此类推。将2020与1000进行整除,结果为2,显然2就是千位数的数字。
(2)将数字与数位的基数进行求余运算,可获得下一数位的数。例如2121与1000进行求余运算,余数为121。如果余数小于数位的基数,那么说明该数位的数字为0。例如2020与1000进行求余运算,余数为20,20小于100,那么百位上的数字为0。
自增自减运算
自增或自减运算是在当前值的基础上加一或减一,然后再将值赋值给变量。自增或自减又分为前缀自增/自减,后缀自增/自减。 前缀自增/自减是指操作符在变量的前面,例如以下代码:
public class HelloJava { public static void main(String[] args) { // 定义整型变量number,初始化为0 int number = 0; // 使用后缀自增运算,先赋值后自增 int value = number++; System.out.println("value的值:"+value+" number的值:"+number); } }
程序输出的结果为:
value的值:0 number的值:1
后缀自增/自减会先做赋值运算,然后再自增/自减,所以为什么在程序的输出中value的值为0,number的值为1。前缀自增/自减则会先做自增/自减运算,再做赋值运算,继续看代码实例:
public class HelloJava { public static void main(String[] args) { // 定义整型变量number,初始化为1 int number = 1; // 使用前缀自减运算,先自减后赋值 int value = --number; System.out.println("value的值:"+value+" number的值:"+number); } }
程序输出的结果为:
value的值:0 number的值:0
算数运算与赋值运算可以进行组合。
代码实例-算数运算的复合运算:
public class HelloJava { public static void main(String[] args) { int number = 0; // number+=2 等价于number=number+2 number +=2; System.out.println("number的值:"+number); } }代码讲解:
(1) 定义了一个number变量,值为0
(2) number += 2等价于number = number + 2,先将numbe的值与2进行加法运算,再将
计算的结果赋值给变量number。。
(3)其它的算数运算同样可以与赋值运算组成复合运算,以此类推。
(3) 关系运算
关系运算,顾名思义,就是比较值的大小。关系运算的结果为布尔类型。Java中的关系运算符:
关系运算符
| 描述 |
> | 比较左操作数是否大于右操作数 |
< | 比较左操作数是否小于右操作数 |
== | 比较左操作数是否与右操作数相等 |
>= | 比较左操作数是否大于等于右操作数 |
<= | 比较左操作数是否小于等于右操作数 |
!= | 比较左操作数是否不等于右操作数 |
代码实例-判断两个数的大小 :
public class HelloJava { public static void main(String[] args) { int x = 1; int y = 2; // 判断x是否大于y,输出的结果为布尔类型 boolean result = x > y; // result的值为false System.out.println("result的值:"+ result); } }
(4) 逻辑运算
逻辑运算,用来计算表达式逻辑值的真假。Java中的逻辑运算符:
逻辑运算符
| 描述 |
&& | 逻辑与运算,所有表达式的值为真值时,结果才为真。 |
|| | 逻辑或运算,只要其中一个为真,那么结果就为真。 |
! | 逻辑非运算,非真就是假,非假就是真。 |
在逻辑与运算中,操作数的值都为真时,结果才为真。在逻辑或运算中,操作数的值只要有一个为真,结果就为真。not表示的是逻辑非运算,即条件的对立面,非真就是假,非假就是真,输出的是true或者false,分别代表真或假。
逻辑运算的短路逻辑
短路逻辑,即在进行逻辑运算时,一旦符合短路逻辑条件,就立即停止表达式后面的逻辑运算。这里的短路逻辑条件,即,逻辑与运算中只要其中一个操作数为假,就停止运算,输出为假。逻辑或运算中只要其中一个操作数为真,就停止计算,输出为真。关于逻辑运算和短路逻辑的代码实例,在第七章介绍条件控制结构时再举例讲解,读者现在仅需掌握各逻辑操作符的基础概念。
5.5.4 结合性与优先级
结合性是指运算的顺序,数据运算的结合性主要有左结合性和右结合性。左结合性是指运算时从左至右进行运算,右结合性是从右至左进行运算。在Java中赋值运算为右结合性,其它运算都为左结合性。
代码实例-赋值运算的右结合性
int x =3; int y = 5; int z = 7; // 赋值运算为右结合性,按从右到左的顺序来赋值 x = y = z = 10; // 经过以上赋值以后,x,y,z的值均为10
代码讲解:
(1) 赋值运算的结合性为从右至左,所以首先赋值的是z=10。
(2) 然后将变量z的值再赋值给变量y,将变量y的值再赋值给x
优先级是指数据运算中存在多个运算符时,优先执行哪种运算。比如在四则运算中,会优先进行乘除法运算,然后再进行加减法运算。
代码实例-简单的四则运算
public class HelloJava { public static void main(String[] args) { int x =3; int y = 5; int z = 7; // 优先计算y*z,再与x相加 int sum = x+y*z; System.out.println("sum的值:"+sum); } }
代码讲解:
(1) 乘法的优先级最高,优先计算y*z,结果为35,然后再计算x+35的值
(2) x的值为3,所以最终的值为38
可按优先级高低,将Java中的各类运算进行排序:
算数运算 > 关系运算 > 逻辑运算 > 赋值运算
在进行数据运算时,可通过()符号来强制运算的优先级,即,使用()括住的优先级是最高的。
代码实例-优先计算x+y
public class HelloJava { public static void main(String[] args) { int x =3; int y = 5; int z = 7; // 优先计算x+y,再与z相乘 int sum = (x+y)*z; System.out.println("sum的值:"+sum); } }
代码讲解:
(1) 先计算()里面的x+y的值,因为()里面的优先级最高
(2) 再将x+y的值与z相乘,最终结果为56
5.5.5 课后习题
(1) Java中主要有哪些数据运算?
(2) 简述你对短路逻辑的理解,并举出一个生活中的例子。
(3) 如果赋值运算为左结合性,那么在5.5.4节的代码实例中x,y,z的值分别为多少?
(4) 编写一段简单的代码,以测试赋值运算的优先级
5.5.6 高薪就业班
(1) Python后端工程师高薪就业班,月薪10K-15K,免费领取课程大纲
(2) Python爬虫工程师高薪就业班,年薪十五万,免费领取课程大纲
(3) Java后端开发工程师高薪就业班,月薪10K-20K, 免费领取课程大纲
(4) Python大数据工程师就业班,月薪12K-25K,免费领取课程大纲
扫码免费领取学习资料: