我写了一个小程序来读取csv文件......我使用缓冲读取器... 我的代码如下所示:
package files;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import bk.bk;
public class QwithLinkedList{
public static void main(String args[]) throws Exception{
FileReader f=new FileReader("G:/bk.csv");
BufferedReader br=new BufferedReader(f);
String line;
while((line=br.readLine())!=(null)){
System.out.println(line);
}
}
}
上面是完美的代码,但我的问题是我使用此代码获得异常:
package files;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import bk.bk;
public class QwithLinkedList{
public static void main(String args[]) throws Exception{
FileReader f=new FileReader("G:/bk.csv");
BufferedReader br=new BufferedReader(f);
String line;
while(!(line=br.readLine()).equals(null)){
System.out.println(line);
}
}
}
上述代码的输出是:
a1
bk
abc
def
ghi
jkl
bharath
Exception in thread "main" java.lang.NullPointerException
at files.QwithLinkedList.main(QwithLinkedList.java:14)
有人请解释为什么它给出了上述代码的例外。 此外,如果(a!= b)和!a.equals(b)是否相同?
答案 0 :(得分:0)
检查null时,请始终使用==
或!=
。如果您检查的内容为空,则使用equals
将始终变为NullPointerException
。
==
和equals
之间的区别在于前者检查双方是否指向内存中的同一地址,而后者检查对象是否相等。
答案 1 :(得分:0)
检查空值时,请不要使用.equals(),因为它可能会像您的情况一样返回NullPointerException。