Java indexOf可以找到null

Java indexOf可以找到null,java,arraylist,null,Java,Arraylist,Null,这是我对indexOf方法(自定义arraylist类)的实现 因为NullPointerException。当i=2时,strings[i]为null,则strings[i]。equalsIgnoreCase(string)将抛出NullPointerException PS:如果没有list()的代码,这只是一种猜测,这是行不通的。不能使用equalsIgnoreCase()测试null equalsIgnoreCase()方法对字符串的值进行比较。空字符串没有值。当您使用null时,您的意

这是我对indexOf方法(自定义arraylist类)的实现


因为
NullPointerException
。当i=2时,
strings[i]
null
,则
strings[i]。equalsIgnoreCase(string)
将抛出
NullPointerException


PS:如果没有
list()
的代码,这只是一种猜测,这是行不通的。不能使用
equalsIgnoreCase()
测试
null

equalsIgnoreCase()
方法对字符串的值进行比较。空字符串没有值。当您使用
null
时,您的意思是这个字符串对象不引用任何东西,因此它没有值,因此任何值都不能等于它。如果在调用
equalsIgnoreCase()
之前有一个null对象,则会抛出
NullReferenceException
,因此它在两个方向都不起作用

如果您使用
=
运算符,它将允许您测试字符串的引用,而
null
将解决该问题,但是这不能用于字符串比较。如果您真的希望这样做,您需要结合以下方法:

if(strings[i] != null && strings[i].equalsIgnoreCase(string))
    return i;
else if(strings[i] == null && string == null)
    return i;

在您的情况下,当i=2时,您将有:

string[2].equalsIgnoreCase(string) evaluates to null.equalsIgnoreCase(string)

当使用空引用时,这将引发空指针异常。

事实上,代码是有效的Java,只是缺少内容。我犯了同样的错误:/我想这取决于我们如何定义有效。OP的代码块如果没有一堆其他东西就无法编译。有效的代码意味着它符合Java语法。这是唯一缺少的list()方法和StringArrayList类。
if(strings[i] != null && strings[i].equalsIgnoreCase(string))
    return i;
else if(strings[i] == null && string == null)
    return i;
string[2].equalsIgnoreCase(string) evaluates to null.equalsIgnoreCase(string)