4

我的 C 代码使用了大量由静态字符串常量标识的命令。

static char* KCmdA = "commandA"
static char* KCmdB = "commandB"
static char* KCmdC = "commandC"

例如,在 CI 中,可以将两个字符串与 strcmp(A, B) 进行比较,但由于我只通过它们的静态字符串标识符引用这些命令,因此只检查指针不等性会更快,因为我知道我的 unknowCMD 只能是指向我的静态字符串之一的指针字符串。

switch(unknowCMD)
{
    case KCmdA:
    ...
    case KCmdB:
    ...
}

我猜在Java中相当于strcmp的方法是:

unknowCMD.equals(KCmdA)

Java中是否有等效的指针相等?我知道 Java 只使用引用。是否可以在不实际比较字符串的情况下将这些引用用于相等测试?

抱歉,如果这很明显,我已经检查了文档,但没有找到任何明确的答案。

4

3 回答 3

6

如果你比较字符串引用的相等性使用==

if(str1==str2){

}
于 2012-07-11T10:24:11.323 回答
4

您可以使用==,但它既危险又脆弱。

请注意,对于Strings,首先要做的equals()是测试引用的相等性,所以这样做不会买太多。

于 2012-07-11T10:24:33.707 回答
3

我认为您在这里使用静态字符串的方式最好使用枚举。您可以使用 .equals 和 == 来比较它们。你也可以在 switch case 中使用枚举。

于 2012-07-11T10:31:22.063 回答