객체지향 프로그래밍(43강 - 강)
18 Jan 2020Object 클래스
- java.lang.Object: 모든 클래스의 최상위 클래스
- 모든 클래스는 Object클래스에서 상속받아 메서드를 사용할 수 있음
- 모든 클래스는 Object 클래스의 일부 메서드를 재정의하여 사용할 수 있음(final로 선언된 메서드 제외)
toString()
getClass().getName() + "@" + Integer.toHexString(hashCode())
- 객체의 정보를 String으로 바꿀 때 유용
- 자바 클래스 중 이미 정의된 클래스가 많음
- 예: String, Integer, Calendar
- 많은 클래스에서 재정의하여 사용
equals()
- 두 객체의 동일함을 논리적으로 재정의 가능
- 물리적 동일함: 같은 주소를 가지는 객체
- 논리적 동일함: 같은 학번의 학생, 같은 주문 번호의 주문
- 물리적으로 다른 메모리에 위치한 객체라도 논리적으로 동일함을 구현하기 위해 사용하는 메서드
hashCode()
- 반환값: 인스턴스가 저장된 가상머신의 주소를 10진수로 변환
두 개의 서로 다른 메모리에 위치한 인스턴스가 동일하다는 의미?
- 논리적으로 동일: equals()의 반환값이 true
- 동일한 hashCode 값을 가짐: hashCode() 반환값이 동일
clone()
-
객체의 복사본을 만들며 기본 틀(prototype)으로부터 같은 속성 값을 가진 객체의 복사본 생성
-
객체지향 프로그래밍의 정보은닉에 위배되는 가능성이 있으므로 복제할 객체는 cloneable 인터페이스를 명시해야 함
class Example implements Cloneable { ... }
String 클래스
선언하기
String str1 = new String("abc"); // 인스턴스로 생성
String str2 = "abc"; // 상수 풀에 있는 문자열을 가리킴
String은 immutable
- 한 번 선언되거나 생성된 문자열은 변경할 수 없음
- String 클래스의
concat()
메서드 또는"+"
를 이용하여 String을 연결하는 경우 문자열은 새로 생성 됨
StringBuilder & StringBuffer
- 가변적인 char[] 배열을 멤버 변수로 가지고 있는 클래스
- 문자열을 변경하거나 연결하는 경우 사용하면 편리한 클래스
- StringBuffer는 멀티 스레드 프로그래밍에서 동기화 보장
- 단일 스레드 프로그래밍에서는 StringBuilder를 사용하는 것이 더 좋음
toString()
메서드로 String 변환
Wrapper 클래스
기본형 | Wrapper 클래스 |
---|---|
boolean | Boolean |
byte | Byte |
char | Character |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |