Day12-20251206
快捷键(IDEA)
-
Shift+Enter:在任意位置切换至下一行
-
Shift+Ctrl+Enter:自动补全
复习自增自减
随堂代码:
package operator;
public class Demo04 {
public static void main(String[] args) {
//++ -- 自增,自减 一元运算符
int a = 3;
int b = a++;//执行完这行代码后,先给b赋值,在自增
//a++ a = a + 1;,这里少写一行代码就是a = a + 1;在执行int b = a++之前
System.out.println(a);
//==a a = a + 1;这里少写一行代码就是a = a + 1;在执行int c = ++a之前
int c = ++a;//执行完这行代码前,先自增,在给c赋值
System.out.println(a);
System.out.println(a);
System.out.println(b);
System.out.println(b);
System.out.println(c);
System.out.println(c);
//幂运算2^3 2*2*2 = 8 java中没有这种写法
//很多运算,我们会使用一些工具类来操作
double pow = Math.pow(2, 3);//Math类提供了很多工程科学计算需要的一些方法和常数
System.out.println(pow);
}
}
输出:
4
5
5
3
3
5
5
8.0
进程已结束,退出代码为 0
注意:
-
a++,先把a赋值给b,然后再执行a+1的操作。所以会在这一步后输出a=4。b=3。
-
++a,先执行a+1的操作,然后再把a赋值给c。所以会在这一步后输出a=5。c=5
逻辑运算:&&(与)、||(或)、!(非)
package operator;
//逻辑运算符
public class Demo05 {
public static void main(String[] args) {
//与(and)&& 或(or)|| 非(取反)!
boolean a = true;
boolean b = false;
System.out.println("a && b:"+(a&&b));//逻辑与运算:两个变量都为真,结果才为true
System.out.println("a || b:"+(a||b));//逻辑与运算:两个变量有一个为真,结果才为true
System.out.println("!(a &&b ):"+!(a&&b));//如果是真,则变为假,如果是假则变为真
//短路运算
// 与门中都为真才输出true,第一个为lalse,则直接输出false,不会进行后续操作
int c = 5;
boolean d = (c < 4) && (c++ < 10);
System.out.println(d);
System.out.println(c);
}
}
位运算:&、|、^、~、>>、<<、>>>
package operator;
//位运算符
public class Demo06 {
public static void main(String[] args) {
/*
A = 0011 1100
B = 0000 1101
------------------------------
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~B = 1111 0010
2*8 = 16 2*2*2*2
效率极高
(左移)<< *2
(右移)>> /2
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
0001 0000 16
*/
//A与B,二进制比较时,两个位上都为1,则为1.否则为0
//A或B,二进制比较时,两个位上都为0,则为0.否则为1
//异或运算,二进制比较时,两个位上相同,则为0.否则为1
//~取反,每一位上取相反的
System.out.println(2<<3);
}
}
<< *2,>> /2
扩展赋值运算符:+=、-+、*=、/=
a+=b:a=a+b
a-=b:a=a-b
package operator;
//扩展赋值运算符:+=,-=,*=,/=
public class Demo07 {
public static void main(String[] args) {
int a = 10;
int b = 20;
a+=b;//a = a+b
a-=b;//a = a-b
System.out.println(a);
//字符串连接符 + ,+两侧出现字符串类型(String)都转换为String在进行链接
System.out.println(a+b);
System.out.println(""+a+b);//字符串在前则相连
System.out.println(a+b+"");//字符串在后则先运算在拼接
}
}
条件运算符?:
优先级
()最高优先级
Java 运算符的优先级从高到低排序如下(同一行优先级相同,按结合性计算):
- 括号: () (最高优先级,强制改变运算顺序)
- 单目运算符: ++ (自增)、 -- (自减)、 ! (非)、 ~ (按位非)、 + (正号)、 - (负号)、 (类型) (强制类型转换)、 new (创建对象)
- 算术运算符: * (乘)、 / (除)、 % (取余)
- 算术运算符: + (加)、 - (减)
- 移位运算符: << (左移)、 >> (右移,带符号)、 >>> (无符号右移)
- 关系运算符: > 、 < 、 >= 、 <=
- 关系运算符: == (等于)、 != (不等于)
- 按位与: &
- 按位异或: ^
- 按位或: |
- 逻辑与: &&
- 逻辑或: ||
- 三目运算符: 条件 ? 表达式1 : 表达式2
- 赋值运算符: = 、 += 、 -= 、 *= 、 /= 、 %= 、 <<= 、 >>= 、 >>>= 、 &= 、 ^= 、 |= (最低优先级)
示例:
int a = 2 + 3 * 4; // 先算 3*4=12,再算 2+12=14 → a=14
int b = (2 + 3) * 4; // 括号优先,先算 2+3=5,再算 5*4=20 → b=20
int c = 10 > 5 && 3 < 2; // 先算关系运算,再算逻辑与 → false
优先级不确定时,建议用括号明确顺序,代码更易读~
本文介绍了Java中的运算符使用和优先级规则。主要内容包括:1) IDEA快捷键Shift+Enter换行和Shift+Ctrl+Enter自动补全;2) 自增自减运算符++/--的前置和后置区别;3) 逻辑运算符&&、||、!的用法;4) 位运算符&、|、^、~、<<、>>的二进制运算;5) 扩展赋值运算符+=、-=等;6) 条件运算符?:的使用;7) 运算符优先级从高到低排序,建议用括号明确运算顺序。文章通过代码示例演示了各种运算符的具体应用场景和注意事项。
浙公网安备 33010602011771号