Java,“指针”等式和字符串比较

时间:2012-07-11 10:21:54

标签: java string pointers reference equality

我的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只使用引用。是否可以在不实际比较字符串的情况下使用这些引用进行相等性测试?

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

3 个答案:

答案 0 :(得分:6)

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

if(str1==str2){

}

答案 1 :(得分:4)

您可以使用==,但这很危险且很脆弱。

请注意,对于String s,equals()做的第一件事就是测试引用的相等性,所以这样做你买不到多少。

答案 2 :(得分:3)

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