运算符
运算符和表达式
- int a = 10;
- int b = 20;
- int c = a + b;
复制代码 +:是运算符,并且是算术运算符
a + b:是表达式,由于+是算术运算符,所以这个表达式叫算术表达式
算术运算符
符号
符号作用+加-减*乘/除%取模、取余- public class ArithmeticoperatorDemo1 {
- public static void main(String[] args) {
- //+
- System.out.println(3 + 2);//5
- //-
- System.out.println(5 - 1);//4
- //*
- System.out.println(7 * 9);//63
- //如果在运算的时候有小数参与
- //结论:
- //在代码中,如果有效数参与,结果有可能不精确的。
- System.out.println(1.1 + 1.1);//2.2
- System.out.println(1.1 + 1.01);//2.1100000000000003
- //除法
- //结论:
- //1.整数参与计算,结果只能得到整数
- //2.小数参与计算,结果有可能是不精确的
- 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.斗地主发牌
- //三个玩家
- //把每一张牌都定义一个序号
- //拿着序号 % 3 如果结果为1,就发给第一个玩家
- //如果结果为2,那么就发给第二个玩家
- //如果结果为0,那么就发给第三个玩家
- }
- }
复制代码 练习--数值拆分
需求:键盘录入一个三位数,将其拆分为个位、十位、百位后,打印在控制台
公式总结:
- 个位:数值 % 10
- 十位:数值 / 10 % 10
- 百位:数值 / 100 % 10
- 千位:数值 / 1000 % 10
- ...
- 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);
- }
- }
复制代码 数字相加
数字相加
数字进行运算时,数据类型不一样不能运算,需要转成一样的,才能运算。
类型转换的分类
- 隐式转换(自动类型提升)
- 取值范围小的数值-->取值范围大的数值
- //范例:
- int a = 10;
- double b = a;//b = 10.0
复制代码 取值范围:double>float>long>int>short>byte
- 隐式转换的两种提升规则
- 取值范围小的,和取值范围大的进行运算,小的会先提升为大的,再进行运算
- byte、short、char 三种类型的数据在运算的时候,都会直接先提升为int,然后再进行运算
- public class Test {
- public static void main(String[] args) {
- int a = 10;//取值范围小
- double b = 12.3;//取值范围大
-
- double c = a + b;//+ 取值范围小的,和取值范围大的进行运算,小的会先提升为大的,再进行运算
- }
- }
复制代码- public class Test {
- public static void main(String[] args) {
- byte a = 10;
- byte b = 20;
-
- int c = a + b;//byte、short、char 三种类型的数据在运算的时候,都会直接先提升为int,然后再进行运算
- }
- }
复制代码
- 强制转换
- 取值范围大的数值-->取值范围小的数值(如果把一个取值范围大的数值,赋值给取值范围小的变量。是不允许直接赋值的。如果一定要这么做就需要加入强制转换)
- 格式:目标数据类型 变量名 = (目标数据类型) 被强转的数据;
- //范例:
- double a = 12.3;
- int b = (int) a;
复制代码- //范例:
- int a = 300;
- byte b = (byte) a;//会出现错误,byte的取值范围是-128~127,300超出取值范围
复制代码- //范例:
- public class ArithmeticoperatorDemo2 {
- public static void main(String[] args) {
- byte b1 = 10;
- byte b2 = 20;
- //现在要强转的是b1 + b2计算之后的结果。
- //(byte)b1 + b2 强转的是b1,并不是最终的结果
- byte result = (byte) b1 + b2;//错误
- byte result = (byte) (b1 + b2);//正确
- System.out.println(result);//30
- }
- }
复制代码
字符串相加
字符串的“+”操作
- 当“+”操作中出现字符串时,这个“+”是字符串连接符,而不是算术运算符了。
会将前后的数据进行拼接,并产生一个新的字符串。
- 连续进行“+”操作时,从左到右逐个执行。
- //范例:
- int age = 18;
- System.out.println("刚满" + age + "岁");//"刚满18岁"
- System.out.println("刚满" + "age" + "岁");//"刚满age岁"
复制代码- //范例:
- System.out.println(1 + 2 + "abc" + 2 + 1);//"3abc21"
复制代码 练习:数值拆分
需求:键盘录入一个三位数,将其拆分为个位、十位、百位后,打印在控制台- 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);
- }
- }
复制代码 字符相加
- 当 字符 + 字符 或 字符 + 数字 时,会把字符通过ASCLL码表查询到对应的数字再进行计算。
- //范例:
- System.out.println(1 + 'a');//98
- System.out.println('a' + "abc");//"aabc"
复制代码 自增自减运算符
基本用法
符号作用说明++加变量的值加1--减变量的值减1
- 注意事项:++和--既可以放在变量的前面,也可以放在变量的后面
- int a = 10;
- a++;//(++a;)后加加(先加加),表示将变量里面得值加1
- System.out.println(a);//11
复制代码 单独使用(用法一):++和--无论是放在变量的前边还是后边,单独写一行结果都是一样的。- //范例:
- public class ArithmeticoperatorDemo3 {
- 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 age = 1;
- age++;
- System.out.println(age);
复制代码 应用场景二:
购买物品增减购买数量时
-2+应用场景三:数¥号
¥&¥&¥++++++参与计算(用法二):
- 先用后加
- int a = 10;
- int b = a++;//a=11,b=10
复制代码 - 先加后用
- int a = 10;
- int b = ++a;//a=11,b=11
复制代码 练习
- public class ArithmeticoperatorDemo4 {
- public static void main(String[] args) {
- int x = 10;
- //后++:先用后加
- int y = x++;
- //先++:先加后用
- int z = ++x;
- System.out.println("x:" + x);//12
- System.out.println("y:" + y);//10
- System.out.println("z:" + z);//12
- }
- }
复制代码 赋值运算符
分类
符号作用说明=赋值int a = 10,将10赋值给变量a+=加后赋值a+ = b,将a+b的值给a-=减后赋值a -= b,将a-b的值给a*=乘后赋值a *= b,将a×b的值给a/=除后赋值a /= b,将a÷b的商给a%=取余后赋值a %=b,将a÷b的余数给a注意事项:+=,-=,*=,/=,%= 底层都隐藏了一个强制类型转换- //范例:
- public class ArithmeticoperatorDemo1 {
- public static void main(String[] args) {
- //+=
- //规则:将左边和右边进行相加,然后再把结果赋值给左边
- int a = 10;
- int b = 20;
- a += b;//等同于 a = (int) (a + b);
- System.out.println(a);
- System.out.println(b);
- //细节:
- //+=,-=,*=,/=,%= 底层都隐藏了一个强制类型转换
- short s = 1;
- s += 1;//等同于:s = (short) (s + 1);
- System.out.println(s);//2
- }
- }
复制代码 关系运算符
(关系运算符/比较运算符)的分类
符号说明==a==b,判断a和b的值是否相等,成立为true,不成立为false!=a!=b,判断a和b的值是否不相等,成立为true,不成立为false<blockquote>
|a>b,判断a是否大于b,成立为true,不成立为false
=|a>=b,判断a是否大于等于b,成立为true,不成立为false |