我创建了带有三个文本框的“颜色选择器”,用户在其中定义了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/