java != 中的不确定性与 !equals
Uncertainity in java != with !equals
我写了一个小程序来读取 csv 文件...为此我使用了缓冲 reader...
我的代码如下所示:
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)
有人请解释为什么上面的代码会出现异常。
此外 if(a!=b) 和 !a.equals(b) 它们不一样吗?
检查 null 时,始终使用 ==
或 !=
。如果您要检查的内容为空,则使用 equals
将始终成为 NullPointerException
。
==
和equals
的区别在于前者检查双方是否指向同一内存地址,后者检查对象是否相等
检查空值时,切勿使用 .equals(),因为它可能 return 像您的情况一样出现 NullPointerException。
我写了一个小程序来读取 csv 文件...为此我使用了缓冲 reader... 我的代码如下所示:
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)
有人请解释为什么上面的代码会出现异常。 此外 if(a!=b) 和 !a.equals(b) 它们不一样吗?
检查 null 时,始终使用 ==
或 !=
。如果您要检查的内容为空,则使用 equals
将始终成为 NullPointerException
。
==
和equals
的区别在于前者检查双方是否指向同一内存地址,后者检查对象是否相等
检查空值时,切勿使用 .equals(),因为它可能 return 像您的情况一样出现 NullPointerException。