2013-01-17 4 views
0

Screencap값 비교하지 내가 두 문자열을 비교하고 제대로

작업, 나를 혼란, 그리고 분명히 그들은 동일하지하지만 그들은이다. 이 문제를 일으킬 수있는 문제가 무엇인지 궁금 해서요. 데이터 유형, 숨겨진 정보, 볼 수없는 정보, 또는 무엇이 있는지 궁금합니다. 모든 입력이 도움이 될 수 있습니다. 감사. 기준 어떤지

if(string.equals(string2)){ 
} 

== 수표 콘텐츠 어떤지 equals() 검사 : equals()하지 == 사용해야

+0

** 당신은 ** 가치 비교를하고 있지 않습니다. 객체에 적용될 때'=='연산자가 * 참조 * 비교를 수행합니다 - 정확히 동일한 객체 일 경우에만 true를 반환합니다. –

답변

2

문자열/개체 비교

예 (문자열 리터럴 비교의 경우 excepts). 이 discussion을 읽어보십시오.

+1

이것에 다음을 추가하면됩니다 : ==는 객체에 대한 참조가 같은지 확인합니다 .equals()는 문자 시퀀스 평등을 확인합니다. –

+0

감사합니다. C++이나 Java와 관련된 것은 사실입니까? –

+0

@ user1582340 : C++에 대해서는 모르겠지만 Java에서는 true이고 .NET에서는 사실이 아닙니다. – kosa

1

.equals()과 같은 field1.equals("formDateCreated")을 확인하는 방법을 사용하십시오. == 연산자는 두 개의 참조 변수가 동일한 문자열 인스턴스를 참조하는지 확인합니다. equals() 메서드는 두 문자열이 의미 상으로 동일한 지 확인합니다.

1
equalsIgnoreCase(String anotherString) 

에 대해 고려하지 않은 경우. 이 체크 날씨는 문자열의 내용이 동일하지 ==

나는 당신이 당신이 가능한 경우 NullPointerException을 극복하는 데 도움이 그래서 우는 소리

"formDateCreated".equalsIgnoreCase(field) 

처럼 확인하는 것이 좋습니다 것입니다 참조

2
field.trim().equalsIgnoreCase("formDateCreated") 

이 시도. String trim() 메서드는 선행 및 후행 공백이 생략 된 문자열 복사본을 반환합니다.

+0

"formDateCreated".trim() 여기에 공백이 없으므로 여기서는자를 필요가 없습니다 – Suranga

+0

예, 알고 있습니다 만 이로 인해 user1582340이 될 수 있습니다. –

+0

트림이 없다는 점에주의하십시오. 그러나 당신은()이 "formDateCreated" – Suranga

관련 문제