2012-12-13 11 views
2

가능한 중복 :이상한 경우 - 다음 행동

System.out.println(staff.getEmail().length()); 
    System.out.println(staff.getEmailList()); 
    if ((staff.getEmail().length() > 0) && (staff.getEmailList() == "Y")) { 
     System.out.println(staff.getEmail()); 

이 내 일식 콘솔의 출력은 다음과 같습니다 :

이 코드가

How do I compare strings in Java?

12 
Y 

제 문제는 if 문에서 두 조건이 모두 충족 되어도 내 프로그램이 마지막 코드 줄 (System.out.println (staff.getEmail()))에 도달 할 수 없다는 것입니다. 나는 어떤 오류도 없다.

어떤 아이디어가 잘못되었을 수 있습니까? 고마워요 :)

답변

7

당신은 String.equals()을 사용해야하고, 연산자가 아닌 ==는 java의 문자열 동일성에 사용됩니다. 이 신원 확인을위한 operator==이기

staff.getEmailList() == "Y"

"Y".equals(staff.getEmailList())

에 따라서 변환한다. 두 피연산자가 동일한 객체를 참조하는 경우 (동일한 객체를 참조하는 경우) equals()등호 - 두 피연산자가 서로 같은지 확인합니다.

0

여기서는 실제 문자열 값이 아니라 참조 (C 언어로 된 포인터)를 비교합니다. 당신이 두 개의 문자열들이 같은 값을 가질 경우, 같은 String 인스턴스 인 경우에 당신이 요구하는 비교 staff.getEmailList() == "Y"을 수행 할 때

(staff.getEmailList() == "Y") 

(staff.getEmailList().equals("Y")) 
0

을 수행해야합니다. 대신 staff.getEmailList().equals("Y")을 입력해야합니다.