字符串与具体值比较的两个注意
两个注意
在条件判断中,经常会对字符串的值进行比较。需要注意的有两点:
- 使用
equals
方法而不是==
; - 比较前先判断非null。
Demo and Analysis
public static void main(String[] args) {
String x="he"+"llo";
String y=null;
String z= new String("hello");
System.out.println( x==z ); // false
System.out.println( x.equals(z) ); // true
System.out.println( y.equals(z) ); // java.lang.NullPointerException
}
由于 ==
判断的是内存单元中的内容,而字符串变量在内存中存储的是字符串的引用地址。所以要判断字符串的值,需要使用 equals
方法。虽然 equals
方法也是判断内存单元中的内容,但是在String类中对该方法进行了重写,重写后可以用于比较字符串的值。
如果对象为null,那么比较时会报NullPointerException
异常。
Correct
需要先判断是否为空,如果不为空才能进行后续的比较。如果逻辑比较简单,可以使用短路运算符 &&
。要是 s1 != null
判断结果为false,也就是s1为null,那么直接返回false,后面不会被执行因此不会报空指针异常。
public static void main(String[] args) {
String s1 = null;
if (s1 != null && s1.equals("hello")) {
System.out.println("hello");
}
}
他の者にできたか?ここまでやれたか?この先できるか?いいや、仆にしかできない!