6、Java运算符
6.1 算术运算符
-
除法:/
//整除 System.out.println(10/4);//输出2 System.out.println(10.0/4);//输出2.5 double d1 = 10/4; System.out.println(d1);//输出2.0
-
取模: %
//取模,取余 //按照公式a % b = a - a / b * b 计算最终取模结果 // 快速判断看被除数符号即可 System.out.println(10%3);//输出1 System.out.println(-10%3);//输出-1 System.out.println(10%-3);//输出 10 - 10 / (-3) * (-3) = 1 System.out.println(-10%-3);//输出 -10 - (-10) / (-3) * (-3) = -10 + 9 = -1
-
自增自减 : ++ –
//自增自减 //作为独立的语句使用,++i和i++完全等价,自减同理 int i = 10 ; i++; ++i; System.out.println(i);//输出12 //作为表达式用,++i先自增后赋值;i++先赋值后自增,自减同理 int i1 = 10 ; int j1 = i1++;//等价:j1 = i1 , i1 = i1 + 1 int j2 = ++i1;//等价: i1 = i1 + 1 , j2 = i1 System.out.println(j1);//输出10 System.out.println(j2);//输出12 int i3 = 1; i3 = i3++; System.out.println(i3);//输出1 ,规则(使用临时变量):temp = i3 , i3 = i3 + 1 , i3 = temp int i4 = 1; i4 = ++i4; System.out.println(i4);//输出2,规则(使用临时变量):i4 = i4 + 1, temp = i4 , i4 = temp
6.2 关系运算符
/*
结果都是boolean类型的,要么是true,要么是false
==
!=
>
<
>=
<=
*/
6.3 逻辑运算符
//逻辑与 & , 逻辑或 | , 逻辑非 !, 逻辑异或 ^ (a^b : 当a和b不同时,结果为true,否则为false )
//短路与 && , 短路或 ||
//&和&&区别:对于短路与&&来说,第一个条件为false,后面的条件不再判断,开发中基本使用短路与,效率高
// 对于逻辑与&来说,无论第一个是否为false,后面条件都会判断,效率低
int i = 5;
int j = 20;
if(i<1 && ++j>10){
System.out.println("短路与&&为true");
}
System.out.println("短路与:i=" + i + ",j=" + j);//这里++j没有执行
if(i<1 & ++j>10){
System.out.println("逻辑与&为true");
}
System.out.println("逻辑与:i=" + i + ",j=" + j);//这里++j没有执行
//短路或 || , 逻辑或 |区别:
// 短路或 || :若第一个条件为true,则第二个条件不用判断,开发中基本使用短路或,效率高
// 逻辑或 | :不管第一个条件是否为true,第二个条件都要判断
6.4 赋值运算符
//复合赋值运算符:+= , -= , *= , /= , %= 等,底层有类型转换!!!
//a+=b 等价于a = a + b
//复合赋值运算符会进行类型转换
byte b = 3;
//b = b + 2; //错,右边为int类型,不能转化为低精度的byte类型
b += 2;//对,等价于 b = (byte)(b + 2),底层有类型转换
System.out.println(b);
6.5 三元运算符
//条件表达式?表达式1:表达式2;
//规则:若表达式为true,输出表达式1,否则。输出表达式2
int a = 34;
int b = 56;
int result = a > b ? 1:0;
System.out.println(result);
//三个数最大值
int n1 = 55;
int n2 = 35;
int n3 = 67;
int max = n1>n2 ? (n1>n3?n1:n3):(n2>n3?n2:n3);
System.out.println(max);
6.6 运算符优先级
- (){} ,等
- 单目运算符:++,-- ,!
- 算术运算符:* ,/,%,+,-
- 位移运算符:>> ,<<,
- 比较运算符:> ,< ,=
- 逻辑运算符:&,|,&&,||
- 三元运算符: ? :
- 赋值运算符:=,/=,%=,+=,-=,!=
基础铺垫
//接受用户输入
//Scanner类,表示简单文本扫描器,在java.util包
//创建对象,使用方法
Scanner scanner = new Scanner(System.in);
System.out.println("输入名字:");
String name = scanner.next();//接受用户输入
System.out.println("name:"+ name);
System.out.println("输入年龄:");
int age = scanner.nextInt();//接受用户输入
System.out.println("age:"+ age);
System.out.println("输入成绩:");
double score = scanner.nextDouble();//接受用户输入
System.out.println("score:"+ score);