3. 运算符与表达式
运算符的优先级(由高到低):
算术运算符 > 关系运算符 > 逻辑运算符 > 赋值运算符
( )
++、--、!
*、/、%
+、-
>、>=、<、<=、==、!=
&&、||
=、+=、-=、*=、/=、%=
3.1 算术运算符
双目运算符:只有两个运算数参数(+、-、*、/、%)
/:如果两边的操作数都是整数类型,那么运算结果也是整数类型,即会丢弃小数部分。如果至少有一个操作数是浮点类型,那么结果也是浮点类型。
%:返回两个数相除后的余数。
代码示例:
public static void main(String[] args) {
test01();
}
private static void test01() {
// 1. 双目运算符:
int a = 10;
int b = 3;
double c = 1.5;
System.out.println("a + b = " + (a + b));
System.out.println("a - b = " + (a - b));
System.out.println("a * b = " + (a * b));
System.out.println("a / b = " + (a / b));
System.out.println("a / c = " + (a / c));
System.out.println("a % b = " + (a % b));
}
程序运行结果为:
单目运算符:只有一个运算数参数(++、–)
a++、++a:相当于a = a + 1
a–、–a:相当于a = a - 1
c = ++a:相当于:① a = a + 1; ② c = a
c = a++: 相当于:① c = a; ② a = a + 1
代码示例:
public static void main(String[] args) {
test01();
}
private static void test01() {
int a = 10;
int b = 3;
// 2. 单目运算符(++ --)
// 2.1 ++运算符
// 2.1.1 前加
// 情况一:单独使用时
++a; // 相当于:a = a + 1
System.out.println("a = " + a);
// 情况二:与表达式一起使用时
int c = ++a; // 相当于:① a = a + 1; ② c = a;
System.out.println("c = " + c + ",a = " + a);
// 2.1.2 后加
// 情况一:单独使用时
a++; // 相当于:a = a + 1;
System.out.println("a = " + a);
// 情况二:与表达式一起使用时
c = a++; // 相当于:① c = a; ② a = a + 1;
System.out.println("c = " + c + ",a = " + a);
// 2.2 --运算符
// 2.2.1 前减
// 情况一:单独使用时
--a; // 相当于:a = a -1;
System.out.println("a = " + a);
// 情况二:与表达式一起使用时
c = --a; // 相当于:① a = a - 1; ② c = a;
System.out.println("c = " + c + ",a = " + a);
// 2.2.2 后减
// 情况一:单独使用时
a--; // 相当于:a = a -1;
System.out.println("a = " + a);
// 情况二:与表达式一起使用时
c = a--; // 相当于:① c = a; ② a = a - 1;
System.out.println("c = " + c + ",a = " + a);
}
程序运行结果为:
3.2 关系运算符
比较运算符:>、>=、<、<=、==、!=
用在关系表达式中(返回的是一个布尔值),代表比较大小
代码示例:
public static void main(String[] args) {
test02();
}
private static void test02() {
int a = 10,b = 5;
boolean b1 = a > b;
System.out.println("b1 = " + b1);
boolean b2 = a == b;
System.out.println("b2 = " + b2);
boolean b3 = a <= b;
System.out.println("b3 = " + b3);
}
程序运行结果为:
3.3 赋值运算符
=、+=、-=、*=、%=
代码示例:
public static void main(String[] args) {
test03();
}
private static void test03() {
// 1. 简单赋值运算符=(等号右边的值赋给=号左边的变量)
int a = 10;
System.out.println("a = " + a);
// 2. 复合赋值运算符
a += 5;
System.out.println("a = " + a);
a -= 3;
System.out.println("a = " + a);
a *= 2;
System.out.println("a = " + a);
a /= 5;
System.out.println("a = " + a);
a %= 5;
System.out.println("a = " + a);
}
程序运行结果为:
3.4 逻辑运算符
&&、||、!:用于链接多个关系表达式
1、逻辑与(&&)的用法:
① 普通用法:多个参与运算的表达式都返回true
,整个表达式才返回true
② 短路用法:参与运算的多个表达式,只要有一个为false
,此时就不会再向后执行,整个表达式返回false
代码示例:
public static void main(String[] args) {
test04();
}
private static void test04() {
// 1. 逻辑与&&用法:
// 1.1 普通用法:代表的是多个参与运算的表达式,都返回true,整个表达式才返回true
int a = 10,b = 5,c = 8,d = 17;
if (a > b && c > d){
System.out.println("条件成立。");
}else{
System.out.println("条件不成立。");
}
// 1.2 短路用法:参与运算的多个表达式,只要有一个为false,此时就不会再向后执行了,整个表达式就返回false,
if(a++ < --b && ++c < d--){
System.out.println("------条件成立--------。");
}
System.out.println("a = " + a + ",b = " + b + ",c = " + c + ",d = " + d);
}
程序运行结果为:
2、逻辑或(||)的用法:
① 普通用法:多个参与运算的表达式,每个表达式为false
,整个表达式才返回false
② 短路用法:参与运算的多个表达式,只要有一个为true
,此时就不会再向后执行,整个表达式返回true
代码示例:
public static void main(String[] args) {
test04();
}
private static void test04() {
int a = 10,b = 5,c = 8,d = 17;
// 2. 逻辑或||用法:
// 2.1 普通用法:代表的是多个参与运算的表达式,每个表达式为false,整个表达式才为false
boolean b1 = a < b || c > d;
System.out.println("b1 = " + b1);
// 2.2 短路用法:参与运算的多个表达式只要有一个为true,后面的表达式就不参与运算了。
boolean b2 = a++ > --b || d-- < c++;
System.out.println("b2 = " + b2);
System.out.println("a = " + a + ",b = " + b + ",c = " + c + ",d = " + d);
}
程序运行结果为:
3、逻辑非(!)的用法:取反
代码示例:
public static void main(String[] args) {
test04();
}
private static void test04() {
int a = 10,b = 5,c = 8,d = 17;
boolean b2 = a++ > --b || d-- < c++;
System.out.println("b2 = " + b2);
// 3. 逻辑非(取反):
boolean b3 = !b2;
System.out.println("b3 = " + b3);
}
程序运行结果为: