在java中混淆​​"== null"和"=="""?

1 java null if-statement is-empty

我有相关的一个简单的问题==null=="",我想每个人都知道这个问题.

这是一个例子:

@SuppressWarnings("unchecked")
public void reorderingCriteia() {
    ListModelList<ReorderData> headerList = new ListModelList<ReorderData>();
    List<String> headerId = new ArrayList<String>();
    String userReorderSelection = Services.userPreferenceService().getUserPreference().getUserOption("PROCESS_CHECKLIST_COLUMN_REORDER");

    if (userReorderSelection == null || userReorderSelection == "") {
        int i = 0;
        for (ReorderData rd : availableReorderList) {
            headerList.add(rd);
            headerId.add("" + i);
            i++;
        }

        folderProcessModel.setHeaderList(headerList);
        folderProcessModel.setHeaderId(headerId);

    } else {
        headerList = ReorderDialogViewModelNew.jsonStringToList("FOLDER_PERMIT_LIST_COLUMN_REORDER", userReorderSelection, false);
        headerId = compHelper.intializeSequnce(headerList, folderProcessModel.getAvailableHeaders());
        folderProcessModel.setHeaderList(headerList);
        folderProcessModel.setHeaderId(headerId);

    }
}
Run Code Online (Sandbox Code Playgroud)

我有一些问题:

  1. 这段代码使用if (userReorderSelection == null || userReorderSelection == "").我能用这个条件if (userReorderSelection == null)吗?

  2. 两个有什么区别?

Sud*_*hul 5

== null检查null参考.

== ""检查空白/空字符串引用.在这里你可以str.equals("")用来检查字符串是否为空/空白.==用于对象引用检查.或者您可以使用它String.isEmpty()来检查相同.

此外,如果你只使用if (userReorderSelection == null),那么你只会检查是否userReorderSelectionnull,并且它不会确定字符串是否为空.


Foo*_*ish 5

大家回答说:

  • ""检查空字符串.
  • null检查空引用.

使用来自apache commons的StringUtils来消除两个条件.StringUtils.isEmpty(yourVariable)这个条件将处理这两种情况.