一、运算符和表达式
举例说明什么是运算符,什么是表达式:
int a = 1;
int b = 2;
int c = a + b;
在这个例子当中,+是运算符,并且是算术运算符
a+b是表达式,因为+是运算符,所以a+b是算术表达式
1.1算术运算符
符号 | 作用 |
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
% | 取模,取余 |
举例说明除法和取模、取余:
public class ArithmeticDemo2 {public static void main(String[] args){//除法System.out.println(10 / 2);//5System.out.println(10 / 3);//3System.out.println(10.0 / 3);//3.3333333333333335//取模、取余System.out.println(10 % 2);//0System.out.println(10 % 3);//1System.out.println(1234 % 10);//4}
}
取模的应用场景:
- 可以用取模来判断,A是否可以被B整除
- 判断A是否为偶数-->A%2如果是0,则A是偶数;否则A就是奇数
- 斗地主发牌中三个玩家,每张牌都定义一个序号;当序号%3为1,发给第一个玩家;结果为2,发给第二个玩家,结果为0,发给第三个玩家
练习:键盘上录入一个三位数,打印输出个位、十位、百位数字
import java.util.Scanner;public class text1 {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%10int 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);}
}
数字相加
数字进行运算时,数据类型不一样不能运算,需要转成应用的,才能运算。
类型转换的分类:
- 隐式转换(自动类型提升)把一个取值范围小的数值,转成取值范围大的数据
规则:取值范围小的,和取值范围大的进行运算,小的先提升为大的,再进行运算。
byte short char三种类型的数据在运算的时候,都会直接先提升为int,然后再进行运算。
- 强制转换 -->格式:目标数据类型 变量名 = (目标数据类型)被强转的数据;
字符串的“+”操作
- 当“‘+”操作中出现字符串时,这个“+”是字符串连接符,而不是算术运算符。会将前后的数据进行拼接,产生一个新的字符串。
- 连续进行“+”操作时,从左到右逐个执行。
字符相加
byte、short、char三种类型的数据在运算的时候,都会先提升为int,然后再进行运算
当字符+字符(字符+数字)时,会把字符通过ASCII码表查询到对应的数字再计算。
注意事项:
- /取结果的商,%取结果的余数
- 整数操作只能得到整数,要想得到小数,必须要有浮点数参与运算。
二、自增自减运算符
++和--可以放变量之前也可以之后,单独写一行结果是一样的。
- int a = 10;int b = a++; 先用后加
- int a = 10;int b = ++a; 先加后用
举例来说:
public class ArithmeticDemo4 {public static void main(String[] args) {int x = 10;//后++:先用后加//先把x变量中的值拿出来用,赋值给y,然后进行自增int y = x++;//x=11 y=10//先++:先加后用//先把x变量中的值自增,然后把结果赋值给zint z = ++x;//x=12 z=12System.out.println("x:" + x);System.out.println("y:" + y);System.out.println("z:" + z);}
}
三、赋值运算符
分类:
符号 | 作用 | 说明 |
= | 赋值 | 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 ArithmeticDemo5 {public static void main(String[] args){int a = 10;int b = 20;//把a+b赋值给aa += b;//等同于a = (int)(a+b)System.out.println(a);//30System.out.println(b);//20short s = 1;s += 1;//把s+1赋值给s//等同于s = (short)(s + 1)System.out.println(s);//2}
}
注意:在赋值运算符的底层会进行强制转换。
四、关系运算符
又被称作比较运算符,在关系运算符中,运算符的结果都是boolean类型,结果是true或false,没有其他情况。
五、逻辑运算符
分类:
符号 | 作用 | 说明 |
& | 逻辑与(且) | 并且,两边都为真,结果才是真 |
| | 逻辑或 | 或者,两边都为假,结果才是假 |
^ | 逻辑异或 | 相同为false,不同为true |
! | 逻辑非 | 取反 |
短路逻辑运算符
- && 短路与 结果和&相同,但是有短路效果
- || 短路或 结果和|相同,但是有短路效果
注意事项:
- &|,无论左边true、false,右边都要执行
- && ||,如果左边能确定整个表达式的结果,右边不执行
- &&:左边为false,右边不管是真是假,整个表达式的结果一定是false。
- ||:左边为true,右边不管是真是假,整个表达式的结果一定是true。
- 最常用的逻辑运算符:&&,||,!