一、算数运算符详解和综合练习
1. 运算符和表达式
① 运算符:对字面量或者变量进行操作的符号
② 表达式:用运算符把字面量或者变量连接起来,符合java语法的式子就可以称为表达式。
不同运算符连接的表达式体现的是不同类型的表达式。
③ 举例
int a = 10;
int b = 20;
int c = a + b;
+:是运算符,并且是算术运算符
a + b:是表达式,由于+是算术运算符,所以这个表达式叫算术表达式
2. 算数运算符
符号 | 作用 |
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
% | 取模、取余 |
3. 样例
package com.itheima.arithmeticoperator; public class ArithmeticoperatorDemo1{ public static void main(String[] args){ //+ System.out.println(3 + 2);//5 //- System.out.println(5 - 1);//4 //*(shift + 数字8) System.out.println(7 * 9);//63 //如果在计算的时候有小数参与 //结论: //在代码中,如果有小数参与计算,结果有可能不精确的 //为什么呢 //暂时只要知道这个结论就可以了 //具体的原因,我们到了JavaSE的时候,会再详细的讲解 System.out.println(1.1 + 1.1);//2.2 System.out.println(1.1 + 1.0);//2.1100000000000003 System.out.println(1.1 - 1.01); System.out.println(1.1 * 1.01); } }
package com.itheima.arithmeticoperator; public class ArithmeticoperatorDemo2{ //主入口 //结论: //1.整数参与计算,结果只能得到整数 //2.小数参与计算,结果可能是不精确的,如果我们需要精确计算,那么需要用到后面的知识点 public static void main(String[] args){ //除法 System.out.println(10 / 2);//5 System.out.println(10 / 3);//3 System.out.println(10.0 / 3);//3.3333333333333335 //取模,取余,实际上也是做除法运算,只不过得到的是余数而已 System.out.println(10 % 2);//0 System.out.println(10 % 3);//1 //应用场景 //1.可以用取模来判断,A是否可以被B整除 //A % B 10 % 3 //2.可以判断A是否为偶数 //A % 2 如果结果为0,那么证明A是一个偶数;如果结果是1,那么证明A是一个奇数 //三个玩家 //把每一张牌都定义一个序号 //拿着序号 %3 如果结果为1,就发给第一个玩家 //如果结果为2,就发给得二个玩家 //如果结果为0,就发给第三个玩家 } }
4. 练习
package com.itheima.test; import java.util.Scanner; public class test1{ public static void main(String[] args){ //键盘录入一个三位数,获取其中的个位,十位,百位 //1.键盘录入 Scanner sc = new Scanner(System.in); System.out.println("请输入一个三位数"); int number = sc.nextInt(); //2.获取个位,十位,百位 //公式: //个位:数字%10 //十位:数字/10%10 //百位:数字/10/10%10 //…… 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. “+”操作的三种情况
① 数字相加
② 字符串相加
③ 字符相加
【注】数字进行运算时,数据类型不一样不能运算,需要转成一样的,才能运算
2. 类型转换的分类
① 隐式转换
② 强制转换
3. 隐式转换
① 定义:把一个取值范围小的数值,转成取值范围大的数据
int a = 10; double b = a;
② 取值范围:byte < short < int < long < float < double
③ 什么时候转换:
数据类型不一样,不能进行计算,需要转换成一样的才可以进行计算
④ 转换规则:
取值范围小的,和取值范围大的进行运算,小的会先提升为大的,再进行运算
byte short char 三种类型的数据在运算的时候,都会直接先提升为int,然后再进行运算
4. 强制转换
① 如果把一个取值范围大的数值,赋值给取值范围小的变量,是不允许直接赋值的。如果一定要这么做就需要加入强制转换
② 格式:目标数据类型 变量名 =(目标数据类型)被强制转换的数据
5. 样例
package com.itheima.arithmeticoperator; public class ArithmeticoperatorDemo3{ public static void main(String[] args){ byte b1 = 100; byte b2 = 100; //现在我们要强转的是谁 //b1 + b2计算之后的结果 //byte(b1) + b2 强转的是b1,并不是最终的结果 byte result = byte(b1 + b2); System.out.println(result);//结果发生错误,因为要转换的数据过大 } }
三、字符串和字符的加操作
1. 字符串的“+”操作
① 当“+”操作中出现字符串时,这个“+”是字符串连接符,而不是算数运算符了。会将前后的数据进行拼接,并产生一个新的字符串。
例如:“123”+123=“123123”
② 进行“+”操作时,从左到右逐个执行
例如:1+99+“年黑马”=“200年黑马”
③ 练习
package com.itheima.test; import java.util.Scanner; public class test1{ public static void main(String[] args){ //键盘录入一个三位数,获取其中的个位,十位,百位 //1.键盘录入 Scanner sc = new Scanner(System.in); System.out.println("请输入一个三位数"); int number = sc.nextInt(); //2.获取个位,十位,百位 //公式: //个位:数字%10 //十位:数字/10%10 //百位:数字/10/10%10 //…… 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); } }
2. 字符的“+”操作
当字符+字符/数字时,会把字符通过ASCII码表查询到对应的数字再进行计算
package com.itheima.arithmeticoperator; public class ArithmeticoperatorDemo4{ public static void main(String[] args){ char c = 'a'; int result = c + 0; System.out.println(result); } }
四、自增自减运算符
1. 基本用法
符号 | 作用 | 说明 |
++ | 加 | 变量的值加1 |
- - | 减 | 变量的值减1 |
注意事项:++和- -既可以放在变量的前边,也可以放在变量的后边
2. 两种用法
① 单独使用
++和- -无论是放在变量的前边还是后边,单独写一行结果是一样的
package com.itheima.arithmeticoperator; public class ArithmeticoperatorDemo5{ public static void main(String[] args){ //++和-- int a = 10; //表示把变量a里面的值+1 a++; System.out.println(a);//11 //表示把变量a里面的值+1 ++a; System.out.println(a);//12 //表示把变量a里面的值-1 a--; System.out.println(a);//11 //表示把变量a里面的值-1 --a; System.out.println(a);//10 } }
② 参与计算
先用后加
int a = 10; int b = a++;
先加后用
int a = 10; int b = ++a;
3. 样例
package com.itheima.arithmeticoperator; public class ArithmeticoperatorDemo6{ public static void main(String[] args){ int x = 10; //后++:先用后加 //先把x变量中的值拿出来用,赋值给y,然后再进行自增 //赋值给y的值是自增前的 int y = x++;// x = 11 y = 10 //先++:先加后用 //先把x进行自增,然后把自增后的结果赋值给左边的变量 //先把x自增,变成12,然后再把自增后的12赋值给z int z = ++x;// x =12 z = 12 System.out.println("x:"+x);//12 System.out.println("y:"+y);//10 System.out.println("z:"+z);//12 } }