[JAVA] Java의 인자 전달 참고하기
※ == VS equals()
- ==는 주소값을 비교하는 연산자이다.
- equals()는 이 객체와 다른 객체가 동일한 지를 true or false로 나타내는 함수다.
← [java api 참고]
정의만 보고 이해하기에는 헷갈릴 수 있는 개념이니 예제를 통해서 알아보자
str1와 str2는 같다.
는 str2가 가리키는 문자열을 str1로 바꿨으니 str1와 str2가 같은 문자열을 가리킨다.
str1와 str2의 값은 같다.
str1과 str2 모두 "Hello"라는 값을 가지므로 equals()는 true가 된다.
str1와 str2는 같다.
test2 역시나 str1과 str2 모두 "Hello"라는 값을 가지기 때문에 equals() 예제는 생략한다.
위 소스코드에서 str1과 str2은 서로 다른 객체의 "Hello"를 가리키고 있다고 생각 할 수도 있지만, 두 변수는 같은 "Hello"를 가리킨다.
서로 다른 객체의 "Hello"를 가리키는 상태로 만들고 싶다면 이런 방법이 있다.
str1와 str2의 값은 같다.
위에서 설명했듯이 두 변수모두 "Hello"라는 값을 가지기 때문에 equals()는 true가 된다.
str1와 str2는 같지 않다.
하지만 str1과 str2가 가르키는 "Hello"는 서로 다른 객체이기 때문에 ==은 faulse가 된다.
[정리]
한 문자열과 다른 한 문자열이 같은 문자열을 참조하고 있는지를 알아볼 때는 ==를 사용한다.
한 문자열과 다른 한 문자열이 단순히 같은 값을 가지는지 비교할 때는 equals() 함수를 사용한다.
반응형
'Programming Study' 카테고리의 다른 글
[명품자바프로그래밍] 5장 실습문제(2) (0) | 2017.08.12 |
---|---|
[JAVA] Java의 인자 전달 (0) | 2017.07.08 |
댓글