2012-07-11 4 views
4

정적 문자열 상수로 식별되는 많은 명령을 사용하는 C 코드가 있습니다. strcmp와 함께 두 문자열을 비교할 수 있습니다 CI에서Java, "포인터"같음 및 문자열 비교

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

(A, B) 예를 들어,하지만 난 그들의 정적 문자열 식별자를 통해 그 명령을 참조로 내가 내 unknowCMD 만 할 수 있습니다 알고 있기 때문에 포인터 불평등을 확인 빠른 단지에의 내 정적 문자열 중 하나에 대한 포인터.

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

내가 자바 방법은 동일 될 strcmp와 수에 해당하는 추측 :

unknowCMD.equals(KCmdA) 

자바에서 포인터 평등의 동등한 거기를? Java가 참조 만 사용한다는 것을 알고 있습니다. 실제로 문자열을 비교하지 않고 동등성 테스트를 위해 이러한 참조를 사용할 수 있습니까?

죄송합니다. 분명히 확인했지만 확실한 답변을 찾지 못했습니다. 당신이 문자열 refrences의 평등 ==

if(str1==str2){ 

} 

답변

3

여기서 정적 문자열을 사용하는 방식은 Enum을 사용하는 것이 더 좋을 것이라고 생각합니다. .equals 및 ==를 사용하여 비교할 수 있습니다. 스위치 케이스에서도 enum을 사용할 수 있습니다.

+0

사실. 안드로이드에서 추천하지 않은 어딘가에서 읽었 기 때문에 실제로 사용하지 않았습니다. 하지만 아마도 실제로 내 문제에 대한 최선의 접근 방법이 될 것입니다. 열거 형을 사용하여 switch 문을 사용할 수 있습니다. – CodeFlakes

6

당신은 ==를 사용할 수 있지만, 그것은 위험하고 부서지기 쉬운입니다.

String의 경우 첫 번째 내용 인 equals()은 테스트 평등이라는 점에 유의하십시오. 따라서이 작업을 많이하지 않아도됩니다.

+0

@downvoter 이유는 무엇입니까 downvoted 잘못 되었나요? –

4

를 사용하여 비교한다면

+0

와우는 빠른 답변이었습니다. 좋아요. 그래서 equals는 실제로 좋은 문자열 컨텐트를 실제로 비교하지 않습니다. 그것은 실제로 저를 관련된 문제에 대해 생각하게 만듭니다. 문자열 비교를 위해 switch 문을 사용하려면 어떻게해야합니까? – CodeFlakes

+2

Java SE 7이 필요합니다. http://stackoverflow.com/questions/338206/switch-statement-with-strings-in-java – mmalmeida

+0

무엇을 원하십니까?! 최근 기능 일뿐입니다. Android 용으로 개발 중이므로 사용할 수 없게됩니다. 어쨌든 두 분 모두에게 감사드립니다. – CodeFlakes