Java基础之运算符
1.算术运算符
+ - * / % (前)++ (后)++ (前)-- (后)-- +
示例代码
class Test{
public static void main(String[] args){
// 除号 /
int num1 = 12;
int num2 = 5;
int result1 = num1 / num2;
System.out.println(result1); // 2
// 取余运算 %
int m1 = 12;
int n1 = 5;
System.out.println("m1 % n1 = " + m1 % n1 ); // 2
int m2 = -12;
int n2 = 5;
System.out.println("m2 % n2 = " + m2 % n2 ); // -2
int m3 = 12;
int n3 = -5;
System.out.println("m3 % n3 = " + m3 % n3 ); // 2
int m4 = -12;
int n4 = -5;
System.out.println("m4 % n4 = " + m4 % n4 ); // -2
// (前)++:先自增1,后运算
// (后)++:先运算,后自增1
int a1 = 10;
int b1 = ++a1;
System.out.println("a1 = " a1 + ",b1 = " + b1 ); // 11 11
int a2 = 10;
int b2 = a2++;
System.out.println("a2 = " a2 + ",b2 = " + b2 ); // 11 10
// (前)--:先自减1,后运算
// (后)--:先运算,后自减1
int a3 = 10;
int b3 = a3--;
System.out.println("a3 = " a3 + ",b3 = " + b3 ); // 9 10
}
}
特别说明
1.// (前)++:先自增1,后运算
// (后)++:先运算,后自增1
2.// (前)--:先自减1,后运算
// (后)--:先运算,后自减1
3.连接符:+:只能使用在Sting与其他数据类型变量之间使用。
2.赋值运算符
= += -= *= /= %=
示例代码
class Test{
public static void main(String[] args){
// 连续赋值
int i1 = j1 = 10;
int i2 = 10, j2 = 20;
// ****
int i3 = 10;
i3 += 2;
System.out.println(i3); // 12
// ****
short m1 = 10;
//m1 = m1 +2; // 编译不通过
m1 += 2;
System.out.println(m1); // 12 不会改变变量本身的数据类型
}
}
特别说明
1.运算结果不会改变变量本身的数据类型
2.开发中,如果希望变量实现+2的操作,有几种方法?(前提:int num = 10;)
方式一:num = num + 2 ;
方式二:num += 2;(推荐)
开发中,如果希望变量实现+1的操作,有几种方法?(前提:int num = 10;)
方式一:num = num + 1 ;
方式二:num += 1;
方式三:num++;(推荐)
3.比较运算符
== != > < >= <= instanceof
示例代码
class Test{
public static void main(String[] args){
int i = 10;
int j = 20;
System.out.println(i == j); // false
System.out.println(i = j); // 10
boolean b1 = true;
boolean b2 = false;
System.out.println(b1 == b2); // false
System.out.println(b2 = b1); // true
}
}
特别说明
1.比较运算符的结果是boolean类型
2.> < >= <= :只能使用在数值类型的数据之间
3.==和!=:不仅可以使用在数值类型数据之间,还可以使用在其他引用类型变量之间
4.逻辑运算符
& && | || ! ^
示例代码
class Test{
public static void main(String[] args){
// 区分& 与 &&
// 相同点1:& 与 && 的运算结果相同
// 相同点2:当符号左边是true时,二者都会执行符号右边的运算
// 不同点:低昂符号左边是false时,&继续执行符号右边的运算。&&不再执行符号右边的运算
// 开发中,推荐使用&&
boolean b1 = true;
b1 = false;
int num1 = 10;
if(b1 & (num1++ > 0)){
System.out.println("true");
}else{
System.out.println("false");
}
System.out.println("num1 = " + num1);
boolean b2 = true;
b2 = false;
int num2 = 10;
if(b2 && (num2++ > 0)){
System.out.println("true");
}else{
System.out.println("false");
}
System.out.println("num2 = " + num2);
boolean b3 = false;
b3 = true;
int num3 = 10;
if(b3 & (num3++ > 0)){
System.out.println("true");
}else{
System.out.println("false");
}
System.out.println("num3 = " + num3);
boolean b4 = false;
b4 = true;
int num4 = 10;
if(b4 && (num4++ > 0)){
System.out.println("true");
}else{
System.out.println("false");
}
System.out.println("num4 = " + num4);
}
}
特别说明
1.逻辑运算符操作的都是boolean类型的变量。而且结果页数boolean类型
5.位运算符
<< >> >>> & | ^ ~
示例代码
class Test{
public static void main(String[] args){
int i = 21;
i = -21;
System.out.println("i << 2 :" + (i << 2)); // -84
System.out.println("i << 3 :" + (i << 3)); // -168
System.out.println("i << 27 :" + (i << 27)); // 1476395008
int m = 12;
int n = 5;
System.out.println("m & n:" + (m & n)); // 4
System.out.println("m | n:" + (m | n)); // 13
System.out.println("m ^ n:" + (m ^ n)); // 9
}
}
面试题:你能否写出最高效的2 * 8的实现方式?
2 << 3 或 8 << 1
特别说明
1.位运算符操作的都是整型的数据
2.<<:在一定范围内,每向左移1位,相当于 * 2
>>:在一定范围内,每向右移1位,相当于 / 2
5.三元运算符
(条件表达式)? 表达式1 : 表达式2
示例代码
class Test{
public static void main(String[] args){
int x = 10;
int y = 20;
int z = 30;
int max;
max = (x > y)? ((x > z)? x : z) : ((y > z)? y : z);
System.out.println("三个数中最大的数是:" + max);
if(x > y && x > z){
max = x;
}else if(y > x && y > z){
max = y;
}else{
max = z;
}
System.out.println("三个数中最大的数是:" + max);
}
}
特别说明
1.条件表达式的结果位boolean类型
2.根据条件表达式真或假,决定执行表达式1,还是表达式2
如果表达式为true,则执行表达式1
如果表达式为false,则执行表达式2
3.表达式1和表达式2要求是一致的
4.三元运算符可以嵌套使用
5.凡是可以使用三元运算符的地方,都可以改写为if-else,反之,不成立
6.如果程序既可以使用三元运算符,又可以使用if-esle结果,那么优先选择三元运算符。原因:简洁、执行、效率高
浙公网安备 33010602011771号