在上面的示例中,我们首先定义了一个整数变量x
,然后使用if
语句检查x
是否大于0
。如果条件成立(即x
大于0
),则会执行if
代码块中的语句,打印出"x 是正数"
。除了基本的if
语句外,还有一些相关的语句形式可以扩展条件逻辑:
- if-else语句:用于在条件为真时执行一个代码块,否则执行另一个代码块。
int x = 5;
if (x > 0) {
System.out.println("x 是正数");
} else {
System.out.println("x 不是正数");
}
- if-else if-else语句:用于根据多个条件选择性地执行不同的代码块。
int x = 5;
if (x > 0) {
System.out.println("x 是正数");
} else if (x < 0) {
System.out.println("x 是负数");
} else {
System.out.println("x 是零");
}
- 嵌套的if语句:在一个if代码块中嵌套另一个if语句,用于更复杂的条件逻辑。
int x = 5;
int y = 10;
if (x > 0) {
if (y > 0) {
System.out.println("x 和 y 都是正数");
} else {
System.out.println("x 是正数,y 不是正数");
}
} else {
System.out.println("x 不是正数");
}
判断引用类型相等
在 Java 中,判断引用类型相等有两种情况需要考虑:引用相等和对象内容相等。
- 引用相等:使用双等号运算符(= =)可以判断两个引用是否指向同一个对象。如果两个引用指向的是同一个对象,则它们是引用相等的。例如:
String str1 = "Hello";
String str2 = "Hello";
String str3 = new String("Hello");
System.out.println(str1 == str2); // 输出 true,因为str1和str2都指向字符串常量池中的同一个对象
System.out.println(str1 == str3); // 输出 false,因为str1和str3指向不同的对象
- 对象内容相等:对于引用类型,我们通常需要比较它们的内容是否相等,而不仅仅是比较引用是否相等。这时候需要使用equals()方法进行比较。例如:
String str1 = "Hello";
String str2 = "Hello";
String str3 = new String("Hello");
System.out.println(str1.equals(str2)); // 输出 true,因为str1和str2的内容相等
System.out.println(str1.equals(str3)); // 输出 true,因为str1和str3的内容相等
需要注意的是,在使用equals()
方法进行比较之前,要确保对象不为null
,否则会抛出空指针异常。可以使用Objects.equals(obj1, obj2)
方法来避免这个问题,该方法会先检查是否为null,再调用equals()
方法进行比较。 另外,对于自定义的类,如果想要实现对象内容相等的判断,需要重写该类的equals()
方法,并根据对象的属性来进行比较。