Java 爪哇语;指针;相等和字符串比较

Java 爪哇语;指针;相等和字符串比较,java,string,pointers,reference,equality,Java,String,Pointers,Reference,Equality,我有一个C代码,它使用了许多由静态字符串常量标识的命令 static char* KCmdA = "commandA" static char* KCmdB = "commandB" static char* KCmdC = "commandC" 例如,在C中,我可以将两个字符串与strcmp(A,B)进行比较,但由于我仅通过它们的静态字符串标识符引用这些命令,因此只检查指针不相等性会更快,因为我知道unknowCMD只能是指向一个静态字符串的指针 switch(unknowCMD) {

我有一个C代码,它使用了许多由静态字符串常量标识的命令

static char* KCmdA = "commandA"
static char* KCmdB = "commandB"
static char* KCmdC = "commandC"
例如,在C中,我可以将两个字符串与strcmp(A,B)进行比较,但由于我仅通过它们的静态字符串标识符引用这些命令,因此只检查指针不相等性会更快,因为我知道unknowCMD只能是指向一个静态字符串的指针

switch(unknowCMD)
{
    case KCmdA:
    ...
    case KCmdB:
    ...
}
我猜在Java中,strcmp的等效方法是:

unknowCMD.equals(KCmdA)
Java中有指针相等的等价物吗?我知道Java只使用引用。是否可以在不实际比较字符串的情况下使用这些引用进行相等性测试


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

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

if(str1==str2){

}

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


请注意,对于
String
s,
equals()
所做的第一件事就是测试引用的相等性,因此这样做不会带来太多的好处。

我认为,在这里使用静态字符串的方式最好是使用枚举。 您可以使用.equals和==对它们进行比较。
您也可以在开关情况下使用枚举。

哇,这是一个快速的答案。那么equals实际上并不比较现在的字符串内容。这实际上让我想到了一个相关的问题。如何使用switch语句来比较字符串?这需要JavaSE7。看什么?!这只是最近的一个功能?我正在为Android开发,所以我不能使用它。无论如何,非常感谢你们两位,真的。我实际上没有使用它们,因为我在某个地方读到,它不推荐在Android上使用。但这实际上可能是解决我问题的最佳方法。我将能够对枚举使用switch语句。