오늘은 1주, 2주차 강의를 빠르게 한 번 들으면서 헷갈렸던 부분을 체크해두고 그 부분에 대해서 다시 한 번 정리하려고 한다!
1. getter와 setter를 사용하는 이유
객체지향에서 객체의 데이터는 객체 외부에서 직접적으로 접근하는 것을 막는다.
그 이유는 객체의 데이터를 외부에서 마음대로 읽고 변경할 경우 객체의 무결성이 깨질 수 있기 때문이다.
예를 들면 자동차의 속도는 음수가 될 수 없는데 외부에서 음수로 변경하면 객체의 무결성이 깨진다.
이러한 문제를 해결하기 위해 객체지향 프로그래밍에서는 메소드를 통해서 데이터를 변경하는 것을 선호한다.
2. 왜 문자열 비교에 equals() 메소드를 써야하는가 ?
일반적인 경우
String name1 = new String("");
String name2 = new String("");
- new연산자는 힙 영역에 새로운 객체를 만든다.
- 이 경우 서로 다른 String 객체를 참조하게 된다.
new 연산자 사용
String name1 = new String("");
String name2 = new String("");
- new연산자는 힙 영역에 새로운 객체를 만든다.
- 이 경우 서로 다른 String 객체를 참조하게 된다.
1. == 연산자는 참조(주소)를 비교
== 연산자는 객체의 메모리 주소(참조값)를 비교하기 때문에, 같은 문자열이라도 **서로 다른 객체라면 false**를 반환한다.
> name1 == name2 의 결과는 true
name3 == name4 의 결과는 false
2. equals() 메서드는 문자열의 내용(value)을 비교
equals() 메서드는 문자열의 실제 값(내용)을 비교한다.
> boolean result = name3.euqls(name4); 의 결과는 true
JVM 메모리 사용영역에 대해 공부를 하다보니까 왜 문자열 비교하는 부분에서 ==가 아닌 equals()를 사용하는가? 에 대해서 자연스럽게 깨닫게 되었다.
3. this
4. super
5. implements VS extends
--블로그 이동중...---
'TIL' 카테고리의 다른 글
TIL11. 키오스크 Lv2,3 진행 (1) | 2025.03.12 |
---|---|
TIL10. 자바 기초를 공부하면서(2) (0) | 2025.02.28 |
TIL8. 깃, 브랜치 전략 (0) | 2025.02.28 |
TIL7. 1주차를 마치며.. KPT회고 (0) | 2025.02.28 |
TIL6. 1주차 - 상세 페이지 만들기 (0) | 2025.02.28 |