【发布时间】:2012-01-16 08:44:57
【问题描述】:
对于 Android 应用,我有以下功能
private ArrayList<String> _categories; // eg ["horses","camels"[,etc]]
private int getCategoryPos(String category) {
for(int i = 0; i < this._categories.size(); ++i) {
if(this._categories.get(i) == category) return i;
}
return -1;
}
这是编写获取元素位置的函数的“最佳”方式吗?还是我应该利用 java 中的花哨的 shmancy 本机函数?
【问题讨论】:
-
这段代码可能有缺陷:在大多数情况下,使用
==会产生不正确的结果。 -
记住,你不能用'=='比较字符串,你必须使用String.equals(String str)
-
@MrZander 当然,您可以将它们与
==进行比较......这不是正确的比较;-) -
你可以说我还是 Java 新手。
String.equals更像是===在 JavaScript 这样的语言中可能是什么?例如。检查值和类型? -
No.
==是object-identity,表示“是同一个对象”。 (这个观点适用于原始值和引用类型,如果你认为只有一个数值为 42 或 char 'x' 等)。Object.equals是为所有对象实例定义的虚拟方法,它意味着“具有相同的值”,因为所有类类型都扩展了 Object,并且应该用于所有 对象平等测试。 封面==与Object.equals有很多问题,这是一个非常重要的概念!例如,这是错误的:"hello" == new String("hello")!哇!