关系运算符是用于比较两个值之间关系的运算符。在Java中,共有以下关系运算符:
-
相等关系运算符(==):用于判断两个值是否相等。如果相等则返回true,否则返回false。 例如:int x = 5; int y = 5; System.out.println(x == y); // 输出:true
-
不相等关系运算符(!=):用于判断两个值是否不相等。如果不相等则返回true,否则返回false。 例如:int x = 5; int y = 10; System.out.println(x != y); // 输出:true
-
大于关系运算符(>):用于判断左边的值是否大于右边的值。如果是则返回true,否则返回false。 例如:int x = 5; int y = 10; System.out.println(x > y); // 输出:false
-
小于关系运算符(<):用于判断左边的值是否小于右边的值。如果是则返回true,否则返回false。 例如:int x = 5; int y = 10; System.out.println(x < y); // 输出:true
-
大于等于关系运算符(>=):用于判断左边的值是否大于等于右边的值。如果是则返回true,否则返回false。 例如:int x = 5; int y = 10; System.out.println(x >= y); // 输出:false
-
小于等于关系运算符(<=):用于判断左边的值是否小于等于右边的值。如果是则返回true,否则返回false。 例如:int x = 5; int y = 10; System.out.println(x <= y); // 输出:true
需要注意的是,关系运算符的操作数可以是基本数据类型(如int、double等)或引用数据类型(如String、Object等)。对于引用数据类型,关系运算符比较的是它们的引用地址而不是具体的值。如果需要比较引用数据类型的值,可以使用equals()方法。
&&和&的区别
在Java中,&&和&都是逻辑与运算符,用于判断多个条件是否都满足。它们的区别如下:
-
执行方式:
- &&:短路与,也称为短路逻辑与。当使用&&运算符时,如果左边的条件为false,则右边的条件将不会被判断,直接返回false。
- &:非短路与,也称为逻辑与。无论左边的条件是true还是false,右边的条件都会被判断。
-
运算速度:
- &&:由于短路与的特性,当左边的条件为false时,右边的条件将不会被判断,因此可以提升性能。
- &:由于非短路与的特性,无论左边的条件是true还是false,右边的条件都会被判断,因此会做额外的判断。
-
应用场景:
- &&:适用于需要判断多个条件,但只有前面条件为true时才需要继续判断后面条件的情况。例如:if语句中,如果前面的条件不满足,则后面的条件也不需要判断了。
- &:适用于需要完整地判断所有条件的情况,不会根据前面的条件结果决定是否继续判断后面的条件。例如:对于位运算等需要对所有位进行操作的情况。
-
//区别 //对于&&符号而言,如果第一个条件为false ,后面的条件就不会判断 //对于&符号而言,如果第一个条件为false ,后面的条件就任然会判断 int a = 4; int b = 9; if (a < 1 && ++b <50) { System.out.println("ok300"); } System.out.println("a=" + a + "b=" + b); System.out.println("******************************************"); if (a < 1 & ++b <50) { System.out.println("ok300"); } System.out.println("a=" + a + "b=" + b);
需要注意的是,当条件是布尔类型时,使用&&和&的结果是相同的。只有当条件是复杂表达式时,短路与和非短路与的差异才会体现出来。在一般情况下,推荐使用短路与(&&)来提升性能。
||和|的区别
在Java中,||和|都是逻辑或运算符,用于判断多个条件是否有一个满足。它们的区别如下:
-
执行方式:
- ||:短路或,也称为短路逻辑或。当使用||运算符时,如果左边的条件为true,则右边的条件将不会被判断,直接返回true。
- |:非短路或,也称为逻辑或。无论左边的条件是true还是false,右边的条件都会被判断。
-
运算速度:
- ||:由于短路或的特性,当左边的条件为true时,右边的条件将不会被判断,因此可以提升性能。
- |:由于非短路或的特性,无论左边的条件是true还是false,右边的条件都会被判断,因此会做额外的判断。
-
应用场景:
- ||:适用于需要判断多个条件,只有其中一个条件为true时才需要继续判断后面条件的情况。例如:if语句中,如果前面的条件已经满足,则后面的条件也不需要判断了。
- |:适用于需要完整地判断所有条件的情况,不会根据前面的条件结果决定是否继续判断后面的条件。例如:对于位运算等需要对所有位进行操作的情况。
-
public class LogicOperator { public static void main(String[] args) { //||短路或 和 |逻辑或 的案例演示 //只要一个条件是真则结果就是真 //短路或||如果第一个条件为真,则不会往后进行判断。效率高 //逻辑或|不管第一个条件是否为真,都要往下进行判断 int a = 4; int b = 9; if (a < 1 || ++b <50) {//只要一个条件是真则结果就是真 System.out.println("ok300"); } System.out.println("a=" + a + "b=" + b); if (a < 1 | ++b <50) { System.out.println("ok500"); } System.out.println("a=" + a + "b=" + b); } }
需要注意的是,当条件是布尔类型时,使用||和|的结果是相同的。只有当条件是复杂表达式时,短路或和非短路或的差异才会体现出来。在一般情况下,推荐使用短路或(||)来提升性能。
练习题:
public class testA {
public static void main(String[] args) {
int x=5;
int y=5;
if ( x++==6&++y==6) {//i++先比较再赋值,++i先赋值再比较
x=11;
}
System.out.println("x="+x+"y="+y);//6,6
if ( x++==6&&++y==6) {
x=11;
}
System.out.println("x="+x+"y="+y);//6,5
if ( x++==6|++y==6) {
x=11;
}
System.out.println("x="+x+"y="+y);//11,6
if ( x++==6||++y==6) {
x=11;
}
System.out.println("x="+x+"y="+y);//11,5
}
}