티스토리 뷰
한화시스템 BEYOND SW 캠프 9기 22일차
2024.07.18_목
어제까지만 해도 JAVA 진도 나가는 속도가 빛의 속도로 느껴졌다...
오늘은 어제보다 쉬운 편이였나..? 그래도 이해가 잘되는 느낌이다.
메모리에서 Stack과 Heap을 머릿 속에서 객체가 생기면 어떤 식으로 메모리에 올라가는지 생각하며 공부하니 조금 나은 것 같다 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
오늘은 인터페이스, 자주 쓰는 API(Object, String, StringBuilder, Wrapper)에 대해 배웠다.
앞에 클래스와 객체를 이번 주말에 공부를 좀 더 해서
앞으로 공부 함에 있어 이해를 잘할 수 있게 만들자!! 확실히 개념이 중요한 파트라 개념을 확실히 알고 외울 건 외워주고!!
정리 무조건 해서 많이 보고 외우다보면 또 이해가 가고 할 것이다.
주말에 수업도 빠르게 다시 한 번 보면서 흐름도 한 번 봐보자!!
결국, 주말에 해야할 것은
1. 클래스와 객체부터 정리 후 이해 및 암기
2. 수업 빠르게 다시 보며 흐름 파악하기
3. 자바 전에 배운 것 정리...ㅎㅎ
이렇게 3가지만 해도 진짜 잘한거라고 생각한다....ㅋㅋㅋ
이번에 수업 들으며 내가 이해가 잘 안되고 헷갈리는 부분은...
자주 쓰는 API 파트에서 Object의 toString, equals, hashCod다.
정리 한 번 하고 가즈아!!!!
1. toString()
객체의 문자 정보(문자열로 표현한 값)를 리턴
- 재정의(오버라이딩) 없이 사용하는 경우
- class의 이름과, hashCode 값을 반환해준다.
- 예) 클래스명@16진수해시코드
- 즉, 문자열의 내용이 아닌 주소값을 반환
- 재정의(오버라이딩) 후 사용하는 경우
- 객체의 정보를 문자열로 표현
- 문자열의 내용을 반환하기 위해 재정의(오버라이딩) 필요
2. equals()
두 객체가 같은지 비교
- 재정의(오버라이딩) 없이 사용하는 경우
- 두 객체의 내용이 아닌 주소값을 비교한다.
- 재정의(오버라이딩) 후 사용하는 경우
- 객체의 내용을 비교한다.
- 물리적으로 다른 메모리 주소를 갖는 객체이더라도, 논리적으로 동일한지 여부를 반환
- 보통 String으로 만들고 그 때 equals() 사용하면 값만 보고 비교한다.
- '==' VS. equals()
- '==' 연산자 : 주소값 비교
- 기본자료형 경우 상수 풀(Constant Pool)에 값이 저장되기 때문에 주소값도 같아서 값만 같으면 true 이다.
- 참조자료형 경우 객체를 생성하면 값이 같아도 주소값이 다르기 떄문에 값이 같아도 주소가 다를 수 있다. 그렇담 false 이다.
- equals() : 객체의 값 비교
- 기본자료형, 참조자료형 등등 값만 같으면 true이다.
- '==' 연산자 : 주소값 비교
3. hashCode()
객체 해시코드를 (정수형 값으로) 반환
- 재정의(오버라이딩) 없이 사용하는 경우
- 객체의 메모리 주소를 이용해서 해시코드를 만들어 리턴하기 때문에 객체마다 다른 값
- 재정의(오버라이딩) 후 사용하는 경우
- 물리적으로 다른 메모리 주소를 갖는 두 객체에 동일성을 부여한다.
- 값이 같으면 같은 (정수)값을 부여(10진수 주소값은 아니다.)
4. 객체의 동등성 검사
- hashCode 메소드와 equals 메소드는 함께 재정의하는 것을 권장.
- hashCode 먼저 비교하고! equals 비교한다!
- equals로 비교한 값이 같아도 hashCode가 다르면 다른 객체로 판단.
- hashCode() 값 비교
- 다름 → 다른 객체
- 같음
- equals() 리턴 값
- false → 다른 객체
- true → 같은 객체
- equals() 리턴 값
4-1. 동일성 VS. 동등성
- 동일성
- 두 객체가 완전히 같은지 판단할 수 있는 성질
- == 으로 주소값을 비교
- 동등성
- 객체가 같은 정보를 가지고 있는지 판단할 수 있는 성질
- equals()로 내용을 비교
'한화시스템 > 회고' 카테고리의 다른 글
한화시스템 BEYOND SW 캠프 9기 5주차 회고 (0) | 2024.07.21 |
---|---|
[023] JAVA...땜에 내 뇌가 예외처리 된 것 같다...ㅋ (0) | 2024.07.20 |
[021] JAVA 상속, 다형성, 추상클래스...내 느낌은 빛의 속도.. (0) | 2024.07.18 |
[020] JAVA 모르는 것 투성이 (0) | 2024.07.17 |
[019] JAVA 객체는 익숙하지 않아..!! (0) | 2024.07.16 |