运算符
1、算术运算符
运算符:对常量或者变量进行操作的符号
表达式:用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。
不同运算符连接的表达式体现的是不同类型的表达式。
举例说明:
int a = 10;
int b = 20;
int c = a + b;
+:是运算符,并且是算术运算符
a + b:是表达式,由于+是算术运算符,所以这个表达式叫算术表达式
| 符号 | 作用 |
|---|---|
| + | 加 |
| - | 减 |
| * | 乘 |
| / | 除 |
| % | 取余 |
注意事项:
/ 和 % 的区别:两个数据做除法, / 取结果的商, % 取结果的余数。
整数操作只能得到整数,要想得到小数,必须有浮点数参与运算。
阅读下列代码,思考运行结果
public class Test {
public static void main(String[] args) {
int a = 1;
char b = ‘a’;
System.out.println(a + b);
}
}
运行结果: 98
a + b 的运算中,a为int类型,b为char类型
在上面的自动类型转换中提到,当(byte short char int)在一起运算的时候,都会提升为int之后,再进行运算
但是,char属于字符,字符是怎样提升为int数值的呢?
根据ASCII码表,char提升为int的过程,就是查找码表中,字符所对应的数值表示形式
字符‘a’查找到数值的97之后,在跟数值1进行运算,结果就是98
我们只需要记住ASCII码表中这三个字符的值即可,后面的值可以进行推算
‘a’--- 97
‘A’--- 65
‘0’--- 48
注意:
当“+”操作中出现字符串时,这个”+”是字符串连接符,而不是算术运算。
在”+”操作中,如果出现了字符串,就是连接运算符,否则就是算术运算。当连续进行“+”操作时,从左到右逐个执行。
案例:数值拆分
需求:键盘录入一个三位数,将其拆分为个位、十位、百位后,打印在控制台
分析:
①:使用Scanner键盘录入一个三位数
②:个位的计算:数值 % 10
123 除以 10(商12,余数为3)
③:十位的计算:数值 / 10 % 10
123 除以 10 (商12,余数为3,整数相除只能得到整数)
12 除以 10 (商1,余数为2)
④:百位的计算:数值 / 100
123 除以 100
(商1,余数为23)
公式总结:
个位 :数值 % 10
十位 :数值 / 10 % 10
百位 :数值 / 10 / 10 % 10
千位 :数值 / 10 / 10 / 10 % 10;
…
import java.util.Scanner;
public class yunsuan{
//数值拆分
public static void main(String[] args){
//输入
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个三位数:");
int num=sc.nextInt();
//个位数 %10
int ge = num%10;
//十位数 /10%10
int shi = num/10%10;
//百位数 /100
int bai=num/100;
System.out.println("数字"+num+"的个位是"+ge);
System.out.println("数字"+num+"的十位是"+shi);
System.out.println("数字"+num+"的百位是"+bai);
}
}
自增自减运算符
单独使用时
单独使用的时候, ++和-- 无论是放在变量的前边还是后边,结果是一样的。
参与操作时
如果放在变量的后边,先将该变量原本的值,取出来参与操作,随后再进行自增(++),自减(--)。
int a = 10;
int b = a++;
结果:b=10,a=11
如果放在变量的前边,先对该变量做自增(++)或者自减(--),然后再拿变量参与操作。
int a = 10;
int b = ++a;
结果:a=11,b=11
最常见的用法:单独使用
2、赋值运算符
3、关系运算符
注意:关系运算符的结果都是boolean类型,要么是true,要么是false
4、逻辑运算符:
&(与) : 并且, 遇false则false, 只有符号左右两边同时为true, 结果才为true. |(或) : 或者, 遇true则true, 只有符号左边两边同时为false, 结果才为false !(非) : 取反 ^(异或) : 相同为false, 不同为true.
& 和 && 的区别 :
&&具有短路效果
& : 无论符号左边是true还是false, 右边都要继续执行
&& : 具有短路效果, 符号左边为false的时候, 右边就不执行了. 如果符号左边为true, 右边要继续执行.
逻辑与&,无论左边真假,右边都要执行。 短路与&&,如果左边为真,右边执行;如果左边为假,右边不执行。
逻辑或|,无论左边真假,右边都要执行。 短路或||,如果左边为假,右边执行;如果左边为真,右边不执行。
5、三元运算符
格式:关系表达式 ? 表达式1 : 表达式2;
范例:a > b ? a : b;
计算规则:
首先计算关系表达式的值
如果值为true,表达式1的值就是运算结果
如果值为false,表达式2的值就是运算结果
public static void main(String[] args) {
// 需求:已知三个人的的身高分别为150cm、210cm、165cm,请用程序实现获取这三个人的最高身高。
int height1=150;
int height2=210;
int height3=165;
//比较出两个人较高的那个,用一个变量接收
int temp=height1>height2?height1:height2;
//用较高的那个身高,跟第三个人的身高比较,得出最高身高
int heighest=temp>height3?temp:height3;
System.out.println(heighest);
}