2013-01-18 1 views
-2

가능한 중복 :
How do I compare strings in Java?왜 문자열 == "값"이 "값"이라도 false를 반환합니까?

사용자는이 개 출력을 얻기 위해 명령 "/ 테스트"를 보냅니다 - 암호가 잘못 경우 - 암호가 정확하면

올바른에게 비밀번호가 "비밀"입니다

사용자가 "/ test secret"을 사용하는 이유는 무엇입니까? 잘못된 암호를 반환합니까?

@Override 
    public void processCommand(ICommandSender sender, String[] args) 
    { 
     if (args.length == 1) 
     {  
      if (args[0] != "secret") { 
       sender.sendChatToPlayer("Wrong password " + sender.getCommandSenderName()); 
      } else { 
       sender.sendChatToPlayer("Welcome " + sender.getCommandSenderName()); 
      } 
     } else if (args.length == 0) { 
       sender.sendChatToPlayer("No parameters send"); 
     } else { 
       sender.sendChatToPlayer("You have to give me just 1 argument"); 
     } 
    } 
+0

트리밍해야 할 공간이 있습니까? –

+3

이 사이트의 많은 다른 많은 질문에서 알 수 있듯이, 자바에서 문자열 평등을 비교하기 위해'.equals()'메소드를 사용해야하기 때문입니다. –

+0

equals() 대 == –

답변

4

이들은 다른 인스턴스이기 때문에. equals()를 사용하여 문자열을 비교합니다.

+1

정확히. '=='두 개의 참조가 같은 인스턴스를 참조하는지 검사한다. –

0

== 대신 string.equals(other_string)을 사용해야합니다. ==은 동일한 개체 만 검사합니다. 그것들은 같은 대상이 아니지만 여전히 동일 할 수 있습니다. String internation은 Java에서 두 개의 객체 이 같은 경우이 될 수 있지만 이것이 보장되는 것은 아닙니다.