일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 백준알고리즘
- 알고리즘공부
- Java개념
- 백준자바
- 자바의정석
- 자바의정석연습문제
- 자바공부
- 개발공부
- ☆
- 백준단계별로풀어보기
- 무료코딩강의
- 시간 복잡도
- 자바의정석연습문제풀이
- 다이나믹 프로그래밍
- 알고리즘
- 코딩공부
- 빅오 표기법
- 백준
- 자바
- 무료개발강의
- dfs
- 브루트포스
- 백준9단계
- 자바개념
- dp
- java
- 동적계획법
- 백트래킹
- BFS
- ★
- Today
- Total
더 많이 실패하기
코딩공부 64일차: 자바의 정석 / 자바의 정석 104~106강 / 9장 java.lang패키지와 유용한 클래스 본문
Object 클래스 - equals(), hasCode(), toString() / String클래스
개발 공부 64일차
자바의 정석 기초편 강의
https://www.youtube.com/watch?v=oJlCC1DutbA&list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp
총 171개의 강의로 구성되어 있다
총 강의 시간은 80시간 정도
강의는 기초편을 기준으로 제작되어 있지만,
http://www.yes24.com/Product/Goods/24259565
Java의 정석 - YES24
최근 7년동안 자바 분야의 베스트 셀러 1위를 지켜온 `자바의 정석`의 최신판. 저자가 카페에서 12년간 직접 독자들에게 답변을 해오면서 초보자가 어려워하는 부분을 잘 파악하고 쓴 책. 뿐만 아
www.yes24.com
링크로 첨부한 자바의 정석 3판으로도 무리가 없다는 댓글이 있어 그대로 진행
ch 9 - 1~3 Object 클래스와 equals()
(3판 기준 450~453쪽)
https://www.youtube.com/watch?v=NI6QZy6juc8&list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp&index=105
9장 java.lang패키지와 유용한 클래스
1. java.lang패키지
1.1 Object 클래스
모든 클래스의 최고 조상. 오직 11개의 메서드만을 가지고 있다
notfy(), wait() 등은 쓰레드와 관련된 메서드
protected Object clone() | 객체 자신의 복사본 반환 |
public boolean equals(Object obj) | 객체 자신과 객체 obj가 같은 객체인지(같으면 ture) |
protected void finalize() | 객체가 소멸될 때 가비지 컬렉터에 의해 자동적으로 호출 이때 수행되어야 하는 코드가 있을 때 오버라이딩 (거의 사용 안 함) |
public Class getClass() | 객체 자신의 클래스 정보를 담고 있는 Class 인스턴스 반환 |
public int hasCode() | 객체 자신의 해시코드 반환 |
public String toString() | 객체 자신의 정보를 문자열로 반환 |
public void notify() | 객체 자신을 사용하려고 기다리는 쓰레드를 하나만 깨운다 |
public void notifyAll() | 객체 자신을 사용하려고 기다리는 모든 쓰레드를 깨운다 |
public void wait() public void wait(long timeout) public void wait(long timeout, int nanos) |
다른 쓰레드가 notify()나 notifyAll()을 호출할 때까지 현재 쓰레드를 무한히 또는 지정된 시간(timeout, nanos)동안 기다리게 한다. (timeout은 천 분의 1초, nanos는 10^9분의 1초) |
*protected 가 붙은 건 오버라이딩해줘야 한다
*notify ~ wait은 쓰레드 관련(13장)
equals(Object obj)
객체 자신(this)과 주어진 객체(obj)를 비교 → 같으면 true 다르면 false
Object 클래스와 equals()는 객체의 주소를 비교(참조변수 값 비교) -> 서로 다른 객체는 항상 거짓
따라서 인스턴스 변수(iv)의 값을 비교하도록 equals() 오버라이딩 필요
-instanceof 로 형변환 가능한지 확인
-형변환 예제: return id == ((Person) obj).id;
-인스턴스변수 값(객체 주소x) 비교
ch 9 - 4~6 hasCode(), toString()
(3판 기준 453~456쪽)
https://www.youtube.com/watch?v=GfYg3imRZsc&list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp&index=104
hasCode()
객체의 해시코드(hash code)를 반환하는 메서드
해시코드: 해싱 알고리즘(11장 컬렉션 프레임에서 다룰 예정)
Object클래스의 hashCode()는 객체의 주소를 int로 변환해서 반환 - 객체의 주소는 객체마다 다르다
equals()를 오버라이딩하면 hasCode()도 오버라이딩해야 한다 - ★ equals()의 결과가 true인 두 객체의 해시코드는 같아야 하기 때문
(System.identityHashCode(Object obj)는 Object클래스의 hashCode()와 동일)
toString()
객체(iv 집합)를 문자열(String)으로 변환하기 위한 메서드
Object클래스의 toString()은 16진수의 해시코드를 반환 → 오버라이딩하는 편이 좋다
오버라이딩할 때 보통 iv값들을 문자열로 바꾼다
(책에는 다른 메서드들에 대한 설명이 있지만 기초편 강의에서는 다루지 않음)
ch 9 - 7~10 String 클래스, 문자열 비교, 빈 문자열
(3판 기준 464~쪽)
https://www.youtube.com/watch?v=PG8kPjwWbWU&list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp&index=106
1.2 String클래스
String 클래스 = 데이터(char[]) + 메서드(문자열 관련)
내용 변경 불가능한(immutable) 클래스
덧셈 연산자(+)를 이용한 문자열 결합은 성능이 떨어짐(계속 새로운 객체를 만들어야 하니까)
문자열의 결합이나 변경이 잦다면 내용 변경 가능한 StringBuffer를 사용
문자열의 비교
String str = "abc";와 String str = new String("abc");의 비교
전자는 객체 공유(문자열 리터럴), 후자는 계속 새로운 객체를 만든다(생성자 사용)
내용 변경이 불가하므로 전자의 방법이 낫다
문자열 리터럴 (리터럴 = 상수)
문자열 리터럴은 프로그램 실행시 자동으로 생성(constant pool(상수 저장소)에 저장)
같은 내용의 문자열 리터럴은 하나만 만들어진다 - String은 내옹 변경 불가하므로 한 객체를 여러 변수가 공유해도 괜찮다
빈 문자열("", empty string)
내용이 없는 문자열. 크기가 0인 char형 배열을 저장하는 문자열
크기가 0인 배열을 생성하는 것은 어느 타입이나 가능
문자(char)와 문자열(String)의 초기화: char c = ' '; / String s = "";
'자바 > 자바의정석' 카테고리의 다른 글
코딩공부 66일차: 자바의 정석 / 자바의 정석 107~110강 / 9장 java.lang패키지와 유용한 클래스 (0) | 2022.10.04 |
---|---|
코딩공부 65일차: 자바의 정석 / 자바의 정석 107~110강 / 9장 java.lang패키지와 유용한 클래스 (1) | 2022.10.03 |
코딩공부 61일차: 자바의 정석 / 자바의 정석 102~104강 / 8장 예외처리 (0) | 2022.09.29 |
코딩공부 59일차: 자바의 정석 / 자바의 정석 94~96강 (0) | 2022.09.27 |
코딩공부 58일차: 자바의 정석 / 자바의 정석 91~93강 (0) | 2022.09.26 |