一. 运算符介绍
Java 提供了许多运算符,这些运算符除了可以处理一般的数学运算外,还可以做逻辑运算、地址运算等。根据其所学的类的不同,运算符可以分为赋值运算符、算术运算符、关系运算符、逻辑运算符、条件运算符、括号运算符等。
二. 三目运算符
三目运算符是一种赋值运算符。
数据类型 变量 = 布尔表达式 ? 满足条件设置的内容 :不满足条件设置的内容;
public class TestDemo {
public static void main(String[] args) {
int x = 10;
int y = 20;
int result = x > y ? x : y;//将 x 和 y 中大的数值赋值给变量 result
System.out.println(result);
}
}
运行结果:
20
使用 if...else 实现三目运算符的功能
public class TestDemo {
public static void main(String[] args) {
int x = 10;
int y = 20;
int result = 0;//定义变量,保存结果
if ( x > y ) //比较 x 和 y 的大小
{
result = x; //如果 x 大,则将 x 的内容赋值给 result
}
else
{
result = y; 如果 y 大,则将 y 的内容赋值给 result
}
System.out.println(result);
}
}
运行结果:
20
虽然可以实现同样的功能,但是从代码的长度上来讲,三目运算更加简单明了,也更加方便。
三. 逻辑运算符
逻辑运算符一共包含三种:与(多个条件一起满足)、或(多个条件有一个满足)、非(true变false,false变true)。
读者可以发现,在定义逻辑运算符时,“与” 和 “或” 操作分别定义了两种不同的符号。
提示:& 和 &&、| 和 || 的区别
- 逻辑运算上:
&:表示普通与,所有的判断都要一次执行;
&&:表示短路与,若干个条件,如果前面的条件返回了 false,那么后面的不会再判 断,结果就是 false;
|:表示普通或,所有的判断条件都要依次执行;
||:表示短路或,若干个条件,如果前面条件返回了 true,后面的不再判断,结果就是 true;
- 位运算上:& 表示位与计算、| 表示位或计算。
public class TestDemo {
public static void main(String[] args) {
if (1 == 2 && 10 / 0 == 0)
{
System.out.println("条件满足。");
}
else {
System.out.println("条件不满足。");
}
}
}
运行结果:
条件不满足。
public class TestDemo {
public static void main(String[] args) {
if (1 == 1 || 10 / 0 == 0)
{
System.out.println("条件满足。");
}
else {
System.out.println("条件不满足。");
}
}
}
运行结果:
条件满足。
四. 位运算符
位运算在 Java 中的运算符包括 &、|、^、~、>>、<<、>>>,而所有的位运算都是采用二进制数据进行操作的。
提示:十进制转换二进制原则
十进制转换二进制位二进制数据的原则为:数据除 2 取余,最后倒着排列,如 19 的二进制值为 10011,但是由于 Java 的 int型数据为 32位,所以实际上最终的数据位 “00000000 00000000 00000000 0010011”。
“与” 运算
public class TestDemo {
public static void main(String[] args) {
int x = 19;
int y = 20;
System.out.println(x & y); //位与操作
}
}
运行结果:
16
计算分析:
19 的二进制数据:00000000 00000000 00000000 0010011
20 的二进制数据:00000000 00000000 00000000 0010100
& 的结果: 00000000 00000000 00000000 0010000
“或” 操作
public class TestDemo {
public static void main(String[] args) {
int x = 19;
int y = 20;
System.out.println(x | y); //位或操作
}
}
运行结果:
23
计算分析:
19 的二进制数据:00000000 00000000 00000000 0010011
20 的二进制数据:00000000 00000000 00000000 0010100
| 的结果: 00000000 00000000 00000000 0010111
移位操作
public class TestDemo {
public static void main(String[] args) {
int x = 19;
System.out.println(x >>> 2); //移位操作
}
}
运行结果:
4
计算分析:
19 的二进制数据:00000000 00000000 00000000 0010011
向右边移位: 00000000 00000000 00000000 0000100
向左边移位操作:
public class TestDemo {
public static void main(String[] args) {
int x = 2;
System.out.println(x << 2); //移位操作
}
}
运行结果:
8
计算分析:
2 的二进制数据:00000000 00000000 00000000 00000010
向左边移 2 位: 00000000 00000000 00000000 00001000