public class DeadCodeInLuna {
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String string;
for (string = in.readLine(); !string.equals(""); string=in.readLine()) {
if(string == null) {
System.out.println("null while reading response!");
}
}
}
}
因为如果!string.equals("")
的值为true
, string
永远不可能是null
。
换句话说,当!string.equals("")
是true
时,string
保证不是null
,否则会出现NullPointerException
。
因为在代码的那一点上,string
不能为空。如果从in.readLine()
中得到null
,则在for
的条件检查中得到NullPointerException
。
改为
for(string=in.readLine();!"".equals(string);string=in.readLine())
if(string==null) System.out.println("null while reading response!");
}
,无论string
是否为空,equals
都将工作,并且您将看到警告消失。
在你的条件下你避免string == null
for (string = in.readLine(); !string.equals(""); string=in.readLine()) {
// ^--------> here!!!
所以if(string == null)
是多余的,永远不会为真