Java 检查字符串数组元素是否为空
因此,我查看了一些关于这个问题的其他线程,似乎我应该能够使用常规比较运算符来检查这个问题 但是,即使我的程序说字符串为null,它稍后也会通过执行if语句来反驳这一点,条件是字符串不为null。更清楚地说,以下是我的完整计划:Java 检查字符串数组元素是否为空,java,arrays,string,null,Java,Arrays,String,Null,因此,我查看了一些关于这个问题的其他线程,似乎我应该能够使用常规比较运算符来检查这个问题 但是,即使我的程序说字符串为null,它稍后也会通过执行if语句来反驳这一点,条件是字符串不为null。更清楚地说,以下是我的完整计划: package bank; public class HowCheckForNull { static void showDates(String[] dates){ for(int i = 0; i < dates.length;
package bank;
public class HowCheckForNull {
static void showDates(String[] dates){
for(int i = 0; i < dates.length; i++){
System.out.println(dates[i]);
System.out.println(dates[i] == null);
System.out.println(dates[i] == (String) null);
System.out.println(dates[i] != null);
if(dates[i] != null);{ //This should not execute!?
System.out.print("A transaction of X$ was made on the " + dates[i] + "\n");
}
}
System.out.println("");
}
public static void main(String args[]){
String[] dates = new String[3];
showDates(dates);
}
}
这里有两件事让我困惑,为什么即使日志显示不是这样,仍要执行if
语句,而且dates[i]
怎么可能同时等于null
和(String)null
if(dates[i] != null);
^
额外的;使下面的块始终执行(无论if语句的计算结果如何),因为它结束if语句。删除它。问题是“;”在
if(条件)之后
结束语句并以正常方式处理剩余代码段,而不考虑任何条件
代码
package bank;
public class HowCheckForNull {
static void showDates(String[] dates){
for(int i = 0; i < dates.length; i++){
System.out.println(dates[i]);
System.out.println(dates[i] == null);
System.out.println(dates[i] == (String) null);
System.out.println(dates[i] != null);
if(dates[i] != null){ //Now it will not execute.
System.out.print("A transaction of X$ was made on the " + dates[i] + "\n");
}
}
System.out.println("");
}
public static void main(String args[]){
String[] dates = new String[3];
showDates(dates);
}
}
null
true
true
false
null
true
true
false
null
true
true
false
null
true
true
false
null
true
true
false
null
true
true
false