use*_*772 12 java string null equals
请帮我看看java中的string.equals如何使用null值?异常有问题吗?三种情况:
boolean result1,result2, result3;
//1st case
String string1 = null;
String string2 = null;
result = string1.equals(string2);
//2nd case
String string1 = "something";
String string2 = null;
result2 = string1.equals(string2);
//3rd case
String string1 = null;
String string2 = "something";
result3 = string1.equals(string2);
Run Code Online (Sandbox Code Playgroud)
结果的价值是什么?我期待这个值:
result1是真的;
result2为false;
result3是假的;
sjr*_*sjr 35
如果该实例是实例变量,则不能使用解除引用(点,'.')运算符来访问实例变量或调用实例上的方法null.这样做会产生一个NullPointerException.
通常的做法是使用您知道的非空字符串进行字符串比较.例如,"something".equals(stringThatMayBeNull).
eli*_*ias 11
实际上,您不能在null变量上使用点运算符来调用非静态方法.
尽管如此,所有这些都取决于重写班级的equals()方法Object.在String班级的情况下,是:
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
如果你null作为参数传递,"if"都将失败,返回false;
您的案例的另一种选择是为您的要求构建一个方法:
public static boolean myEquals(String s1, String s2){
if(s1 == null)
return s2 == null;
return s1.equals(s2);
}
Run Code Online (Sandbox Code Playgroud)
使用Objects.equals(),如果你正在使用JDK 7或更高版本来比较字符串,或任何其他对象。它将处理空值而不会引发异常。在此处查看更多信息:如何在Java中比较字符串
| 归档时间: |
|
| 查看次数: |
64941 次 |
| 最近记录: |