前面我们学过了通过字面量和变量来表示一个数据,这篇文章我们来学习对数据进行运算。而对数据运算就要用到我们这里要讲解的运算符,而在讲解具体的运算符之前,我们对运算符和表达式做一个简单的描述:
运算符: 对字面量或者变量进行操作的 符号
表达式: 用 运算符 把字面量或者变量连接起来 符合java语法的式子 就可以称为表达式。不同运算符连接的表达式体现的是不同类型的表达式。
举例说明:
int a = 10; int b = 20; int c = a + b;
+ :是运算符,是算术运算符
a + b:是表达式,由于+是算术运算符,所以这个表达式叫算术表达式
总共要学习5种类型的运算符,后三种标记为灰色了,我们是在哪里用就在哪里学习。这里我们先学习前两种,首先我们来学习算术运算符
1.1 算术运算符
Java中的算术运算符有如下几种:
符号 | 作用 |
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
% | 取余 |
了解了Java中的算术运算符之后,下面我们到IDEA中去使用一下:
/* 算术运算符 */ public class Test{ public static void main(String[] args) { //定义两个int类型的变量 int a = 6; int b = 4; System.out.println(a + b);//10 System.out.println(a - b);//2 System.out.println(a * b);//24 System.out.println(a / b);// ? ? ? System.out.println(a % b);//2 //整数相除只能得到整数,要想得到小数,必须有浮点数的参与 System.out.println(6.0 / 4); } }
最后,我们来总结一下,刚才在演示代码的时候有两个注意事项:
注意事项
① / 和 % 的区别:两个数据做除法, / 取结果的商, % 取结果的余数.
② 整数操作只能得到整数. 要想得到小数, 则必须有浮点数的参与.
1.2 案例数值拆分
需求:定义一个三位数,将其拆分为个位、十位、百位后,输出在控制台
什么意思呢?下面我们举例来说明一下:
举例:int number = 123;
在控制台输出结果:
个位是:3
十位是:2
百位是:1
知道了要做什么后,下面我们来分析一下如何获取个位,十位,百位:
分析:
① 个位的计算:数值 % 10
123 除以 10(商12,余数为3)
② 十位的计算:数值 / 10 % 10
123 除以 10 (商12,余数为3,整数相除只能得到整数)
12 除以 10 (商1,余数为2)
③ 百位的计算:数值 / 10 / 10 % 10
123 / 10 / 10 % 10(123 / 10 得到12,12 / 10 得到1,1 % 10 得到 1)
分析完毕之后,下面我们到IDEA中去实现一下:
/* 需求:定义一个三位数,将其拆分为个位、十位、百位后,输出在控制台 */ public class Test { public static void main(String[] args) { //定义一个三位数 int number = 123; //获取个,十,百位数据 int ge = number % 10; int shi = number / 10 % 10; int bai = number / 100 % 10; //输出结果 System.out.println("个位是:" + ge); System.out.println("十位是:" + shi); System.out.println("百位是:" + bai); } }
1.3 +操作的三种情况
1.3.1 数字相加(类型转换)
在Java程序中,数据参与运算,要求类型一致。这里就涉及到了数据的类型转换。而类型转换又分为两种:
- 隐式转换
- 强制转换
隐式转换: 把一个表示数据范围小的数值或者变量赋值给另一个表示数据范围大的变量
强制转换: 把一个表示数据范围大的数值或者变量赋值给另一个表示数据范围小的变量
格式:数据类型 变量名 = (目标数据类型)(数值或者变量)
IDEA中代码演示如下:
/* 数字相加 */ public class OperatorDemo01 { public static void main(String[] args) { int a = 10; double b = 13.14; System.out.println(a + b); int c = (int)(a + b); System.out.println(c); // double d = a + b; short s = 10; int i = 20; int j = s + i; // short ss = s + i; short ss = (short) (s + i); } }
1.3.2 字符相加
继续再来说一下字符参与+操作。
先到IDEA中代码演示如下:
/* 字符相加 */ public class OperatorDemo02 { public static void main(String[] args) { //定义两个变量 int i = 10; char ch = 'A'; //'A'的值是65 ch = 'a'; //'a'的值是97 ch = '0'; //'0'的值是48 System.out.println(i + ch); } }
字符参与+操作,其实就是拿字符在计算机底层对应的数值来进行计算的,这里我们了解一下英文大小写字符和数字字符对应的数据值:
- ‘A’ 65 A-Z是连续的
- ‘a’ 97 a-z是连续的
- ‘0’ 48 0-9是连续的
这里也给大家准备了一张 ASCII码表,里面有常用的字符及其对应的数值关系:
1.3.3 字符串相加
接下来,我们继续讲解字符串相加
IDEA中代码演示如下:
/* 字符串相加 */ public class Test{ public static void main(String[] args) { System.out.println("it" + "heima"); System.out.println("itheima" + 666); System.out.println(666 + "itheima"); System.out.println("itheima" + 6 + 66); System.out.println(1 + 99 + "年itheima"); } }
代码演示完毕后,总结如下:
- 当“+”操作中出现字符串时,这个“+”是字符串连接符,而不是算术运算
- “zhongguo”+ 666
- 当连续进行“+”操作时,从左到右逐个执行
- 1 + 9999 + “岁zhongguo”
1.4 赋值运算符
下面呢,我们来学习赋值运算符。
Java中的赋值运算符有如下几种:
了解了Java中的赋值运算符之后,下面我们到IDEA中去使用一下:
/* 赋值运算符 */ public class OperatorDemo { public static void main(String[] args) { int a = 10; System.out.println("a:" + a); // += : 把左边和右边的数据相加,最后把结果赋值给左边 // a += 20; a = a + 20; System.out.println("a:" + a); //注意:扩展的赋值运算符底层隐含了强制类型转换 short s = 1; // s += 2; s = (short) (s + 2); System.out.println("s:" + s); } }
最后,我们来总结一下,刚才在演示代码的时候有个注意事项:
扩展的赋值运算符隐含了强制类型转换.