我创建了带有三个文本框的“颜色选择器”,用户在其中定义了rgb值。
要检查输入的值是否正确(仅0-255之间的数字),我使用以下方法:

public Color getColor() {
    if (tfRed.getText().equals("") || tfGreen.getText().equals("") || tfBlue.getText().equals("")) {
                return new Color(0, 0, 0, 0);
    } else {
        if (tfRed.getText().matches("\\d+") && tfGreen.getText().matches("\\d+") && tfBlue.getText().matches("\\d+")) {
            // ...
        } else {
            return new Color(0, 0, 0, 0);
        }
    }
}

我要问的是:使用String.isEmpty()更好吗?我从来没有找到满意的答案,而且我一直想知道是否有任何区别。

最佳答案

我认为isEmpty()更有效率。但是,智能编译器仍然可以优化equals("")调用。从OpenJDK source:

  671     public boolean isEmpty() {
  672         return count == 0;
  673     }

 1013     public boolean equals(Object anObject) {
 1014         if (this == anObject) {
 1015             return true;
 1016         }
 1017         if (anObject instanceof String) {
 1018             String anotherString = (String)anObject;
 1019             int n = count;
 1020             if (n == anotherString.count) {
 1021                 char v1[] = value;
 1022                 char v2[] = anotherString.value;
 1023                 int i = offset;
 1024                 int j = anotherString.offset;
 1025                 while (n-- != 0) {
 1026                     if (v1[i++] != v2[j++])
 1027                         return false;
 1028                 }
 1029                 return true;
 1030             }
 1031         }
 1032         return false;
 1033     }

同样,关于是否使用str.isEmpty()"".equals(str)answer here也位于:

关于java - String.isEmpty()和String.equals之间的区别(“”),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6828362/

10-13 05:01