Java if语句无法过滤空名称
可能重复:Java if语句无法过滤空名称,java,if-statement,Java,If Statement,可能重复: 您好,我正在使用此代码向组合框添加元素,我不想添加空元素,代码如下: public void elrendezesBetoltes(ArrayList<Elrendezes> ElrLista){ int i; Elrendezes tmp; model.removeAllElements(); model = new DefaultComboBoxModel(comboBoxItems); for(i=0; i<El
您好,我正在使用此代码向组合框添加元素,我不想添加空元素,代码如下:
public void elrendezesBetoltes(ArrayList<Elrendezes> ElrLista){
int i;
Elrendezes tmp;
model.removeAllElements();
model = new DefaultComboBoxModel(comboBoxItems);
for(i=0; i<ElrLista.size(); i++){
tmp = ElrLista.get(i);
if(tmp.getName()!="")comboBoxItems.add(tmp.getName()); //not working
addButton2(tmp.getSeatnum(),tmp.getCoord(),tmp.getFoglalt());
}
}
public void elrendezesBetoltes(ArrayList ElrLista){
int i;
elrenderzetmp;
model.removeAllElements();
模型=新的DefaultComboxModel(comboBoxItems);
对于(i=0;i始终使用equals
方法比较字符串:-
if (tmp.getName()!="")
应该是:-
if (!tmp.getName().equals(""))
或者如果要检查空字符串,只需使用此
:-
if (!tmp.getName().isEmpty()) {
comboBoxItems.add(tmp.getName());
}
使用equals()
:
使用=
或!=
比较字符串引用,而不是字符串内容。这几乎不是您想要的。您必须将字符串与“equals”进行比较,然后它才会起作用
if(!tmp.getName().equals(""))comboBoxItems.add(tmp.getName())
使用equals
方法来比较字符串。通过使用!=
运算符,您可以比较字符串实例,因为它们(tmp.getName()和“”)不是相同的字符串实例,所以这总是正确的
改变
tmp.getName()!=""
到
将“
作为比较中的第一个字符串将处理null
场景,也就是说,如果tmp.getName()
为null
您正在比较标识(=,!=),则它不会中断,但每个字符串实例都有自己的标识,即使它们相等
所以您需要执行!tmp.getName().equals(“”
)
通常认为最好先从常量字符串开始,因为它永远不会为null:!“”.equals(tmp.getName())
但是,我建议使用ApacheCommons lang StringUtils。它有一个notEmpty()
和notBlank()
方法来处理空处理和修剪
PS:有时标识对字符串有效。但不应该依赖它,因为它是由编译器或jvm优化引起的,因为字符串不可变。使用
或:
始终使用equals方法检查字符串相等性。==运算符仅检查两个引用是否指向同一个字符串对象。如果不在Java 6上且isEmpty不可用,另一种选择是:
if (tmp.getName.length()>0)
检查长度应该比使用.equals更快,尽管潜在增益很小,不值得太担心。@BalázsCsíkos..不客气:)你最好使用最后一种方法,检查空字符串。根据数据,甚至可能是!“”.equals(tmp.getName().trim())
!"".equals(tmp.getName())
if(!tmp.getName().isEmpty())
if(!tmp.getName().equals(""))
if (tmp.getName.length()>0)