반응형
나는 지금까지 모든 문자열을 비교하기 위해 내 프로그램에서 ==
연산자를 사용해 왔습니다.
그러나 버그로 도달하고 .equals ()
로 바뀌었고 버그가 수정되었습니다.
==
나쁜가요?언제해야하며 사용하지 않아야합니까?차이점이 뭐야?
해결 방법
==
참조 평등을위한 테스트 (동일한 객체인지 여부).
.equals ()
가치 평등에 대한 테스트 (논리적으로 "동등한"인지 여부).
결과적으로 두 문자열의 값이 같은 값을 테스트하려는 경우 objects.equals ()
를 사용하려는 것입니다.
// These two have the same value
new String("test").equals("test") // --> true
// ... but they are not the same object
new String("test") == "test" // --> false
// ... neither are these
new String("test") == new String("test") // --> false
// ... but these are because literals are interned by
// the compiler and thus refer to the same object
"test" == "test" // --> true
// ... string literals are concatenated by the compiler
// and the results are interned.
"test" == "te" + "st" // --> true
// ... but you should really just call Objects.equals()
Objects.equals("test", new String("test")) // --> true
Objects.equals(null, "test") // --> false
Objects.equals(null, null) // --> true
참조 페이지 https://stackoverflow.com/questions/513832
반응형
'자바' 카테고리의 다른 글
정적지도를 어떻게 초기화 할 수 있습니까? (0) | 2021.04.11 |
---|---|
Tomcat 7에 WAR 파일을 배포하는 방법 (0) | 2021.04.11 |
Java에서 현재 날짜 / 시간을 가져 오는 방법 (0) | 2021.04.11 |
JSONString으로 JSONObject로 변환하는 방법 (0) | 2021.04.11 |
Java는 두 개의 주어진 값 사이에서 난수를 생성합니다 (0) | 2021.04.11 |
댓글