2012-09-05 3 views
0

가능한 중복 : 나는 자바 언어를 연습 jcreator을 사용하고
Java String.equals versus ==자바 조건문

. 나는 사용자 입력이 = "test"이면 "okay!"를 출력하는 조건문을 만들었다. 메시지.

class conditional { 

    public static void main (String[] args) { 

     Scanner user_input = new Scanner(System.in); 

     String username; 
     System.out.print("username: "); 
     username = user_input.next(); 
      if (username == "test") { 
       System.out.println("okay"); 
        } 
        else { 
            System.out.println("not okay"); 
    } 
} 

은 위의 코드는이 "좋아"& & "괜찮 없습니다"라는 메시지 중 하나가 표시되지 않는 오류를 표시하지 않습니다 : 이것은 내 코드입니다. 나는 내 논리가 무엇이 잘못되었는지 확신하지 못한다.

+0

참조 비교 가능성을 위해 문자열 ==에 항상 .equals()를 사용하십시오. –

답변

1

여기서 String.equals을 사용해야합니다.

if (username.equals("test")) { 

그렇지 않으면 개체의 의미보다는 개체의 ID를 비교할 수 있습니다. 실제로 의미 론적 동일성을 만족시키는 두 개의 별개의 객체가 있습니다.

3

== 대신 .equals을 사용하여 문자열을 비교해야합니다. 이것은 모든 비 기본 비교의 경우입니다. 예를 들어 두 int 필드를 ==과 비교하지만 문자열이 기본이 아니기 때문에 .equals이 올바른 선택입니다.

if (username.equals("test")) { 
+0

downvoting 할 때 이유는 무엇입니까? – Vulcan

+0

언제 ==를 사용합니까? – user1645034

0

아니면 ==username.intern();을 사용하려는 경우 다음 당신은 ==를 사용할 수 있습니다.

참고 : FYI에만 권장되는 승인 프로세스는 아닙니다.

+0

'username.intern();'이 아닙니다. 이것은 진술입니다. 비교시'username.intern()'의 결과를 사용해야합니다. 모두가 말한대로 내부화 된 문자열은 힙의 특수 부분에 저장되며 가비지 수집에서 제외됩니다. 결과적으로, 'String'이 내부적으로 예를 들어, 더 큰'char []'(대개'String.substring' 결과의 경우), 당신은 잠재적으로 그것을 깨닫지 않고 꽤 많은 메모리를 낭비 할 수 있습니다. – oldrinb

0

을 사용할 수 있습니다 사용할 수 있습니다 , 말했듯 방법과 또한 당신이 t의 문자의 경우를 무시 해야하는 경우 그는 문자열 당신은 당신이 이런 식으로 할 경우가 작동 .equalsIgnoreCase()

if (username.equals("test")){ 

} 
else{ 

} 
0

를 사용할 수 있습니다

수입 java.util.Scanner;

class Conditional { 
    public static void main(String[] args) { 
     Scanner user_input = new Scanner(System.in); 
     String username; 

     System.out.print("username: "); 
     username = user_input.next(); 

     if (username.equals("test")) { 
      System.out.println("okay"); 
     } else { 
      System.out.println("not okay"); 
     } 

     user_input.close(); 
    } 
} 

몇 가지 발언 :

  • 클래스 이름은 대문자로 시작해야합니다.
  • equals을 사용하여 String을 비교하십시오.
  • 결과가 전혀 인쇄되지 않는다고 명시합니다.콘솔을 클릭하여 대답을 입력하고 으로 입력을 끝내야합니다.을 입력하십시오.