자바의 정석을 공부하면서 공부내용을 정리했습니다.
🌱 Object 클래스
Object 클래스는 모든 클래스의 최고 조상이기 때문에 Object 클래스의 멤버들은 모든 클래스에서 바로 사용 가능.
equals(Object obj)
저장된 주소값이 같은지 확인해서 boolean 값으로 알려주는 역할
String 클래스는 Object 클래스의 equals 메서드를 그대로 사용하는 것이 아니라 오버라이딩을 통해서 String 인스턴스가 갖는 문자열 값을 비교하도록 되어있어서 같은 내용의 문자열을 갖는 두 String 인스턴스에 equals 메서드를 사용하면 항상 true 가 나온다.
hashCode()
객체의 주소값을 이용해서 해시코드를 만들어 반환하기 때문에 서로 다른 두 객체는 같은 해시코드를 가질 수 없다.
toString()
인스턴스에 대한 정보를 문자열(String)로 제공할 목적으로 정의한 것이다.
clone()
자신을 복제하여 새로운 인스턴스를 생성하는 일을 한다.
단순히 인스턴스변수의 값을 복사하기 때문에 참조 타입의 인스턴스 변수가 있는 클래스는 완전한 인스턴스 복제가 이루어지지 않는다.
Cloneable 인터페이스를 구현한 클래스에서만 clone()을 호출할 수 있다.
class Point implements Cloneable{ // Cloneable인터페이스를 구현한다.
public Object clone() { // 접근 제어자 public로 변경
Object obj = null;
try {
obj = super.clone(); // clone 은 반드시 예외처리 해줘야 한다.
}catch (CloneNotSupportedException e) {}
return obj;
}
}
얕은 복사와 깊은 복사
clone() 은 객체에 저장된 값을 그대로 복제할 뿐, 객체가 참조하고 있는 객체까지 복제하지 않는다. 이러한 복제를 얕은 복사라고 하고, 원본이 참조하고 있는 객체까지 복제하는 것을 깊은 복사라고 한다.
Class 객체를 얻는 방법
Class cObj = new Card().getClass(); // 생성된 객체로 부터 얻는 방법
Class cObj = Card.class; // 클래스 리터럴(*.class) 로 부터 얻는 방법
Class cObj = Class.forName("card"); // 클래스 이름으로 부터 얻는 방법
Card C = new Card(); // new연산자를 이용해서 객체 생성
Card C = Card.class.newInstance(); // Class 객체를 이용해서 객체 생성
🌱 String, StringBuffer 클래스
String 클래스는 문자열을 저장하기 위해서 문자형 배열 변수(char[ ]) value를 인스턴스 변수로 정의해놓고 있다.
StringBuffer클래스는 문자열을 저장하기 위한 char형 배열의 참조변수를 인스턴스변수로 선언해 놓고 있다.
StringBuffer인스턴스 생성될 때, char형 배열이 생성되며 이 때 생성된 char형 배열 인스턴스변수 value가 참조하게 된다.
🌱 Math 클래스
임의의 수를 얻을 수 있는 random()
소수점 n번째 자리에서 반올림한 값을 얻을 수 있는 round()
rint() : round()처럼 소수점 첫 번째 자리에서 반올림하지만 반환값이 double
🌱 wrapper 클래스
기본형 변수도 매개변수로 객체를 요구하거나 기본형 값이 아닌 객체로 저장할 때 등의 경우일 때 기본형 값들을 객체로 변환하여 작업을 수행하는데 이 때 wrapper 클래스가 사용된다.
'Language > JAVA' 카테고리의 다른 글
[JAVA] Chapter 11. Collections Framework (0) | 2022.06.02 |
---|---|
[JAVA] Chapter 10. 날짜와 시간 & 형식화 (0) | 2022.05.29 |
[JAVA] Chapter 8. 예외처리 (0) | 2022.05.27 |
[JAVA] Chapter 7. 객체 지향 프로그래밍Ⅱ (0) | 2022.05.24 |
[JAVA] Chapter 6. 객체 지향 프로그래밍Ⅰ (0) | 2022.05.22 |