Develop/Bit Camp & 자바의 정석

12. java.lang 패키지와 유용한 클래스

jaekk 2018. 5. 20. 23:14

12. java.lang 패키지.txt


1. java.lang 패키지


1) 기본 클래스 포함

2) import문없이 사용 가능


1. Object클래스

 주요 메서드

 특징 

 1) equals(Object obj) // 주소값 비교

 public boolean equals(Object obj){

return (this==obj);

 }


↓오버라이딩

public boolean equals(Object obj){

if(obj!=null && obj instanceof Person){

return id=-((Person)obj).id;

}else{

return false;

}

}


 2) hashCode()

 1. 값의 주소값을 이용, 해시코드 생성

 2. 문자열 기반: String.hashCode() 

 3. 주소값 기반: System.identityHashCode(Object x)

 4. Object클래스: 주소값 기반

    String클래스: 문자열 기반

 3) toString()

  1. Object.toString

public String toString(){

return getClass().getName()+"@"+Integer.toHexString(hasCode());

}

 2. 인스턴스에 대한 정보: 인수턴스 변수-> 문자열 

 3. 인스턴수 변수-> 문자열 오버라이딩

1) Date클래스

2) String클래스

3) StringBuffer클래스

 4) clone()

 1. 자신 복제, 새 인스턴스 생성

 2. 인스턴스값만 복사

 3. Cloneable 인터페이스 구현: 데이터 보호

 4. 접근 제어자 protected -> public

 5. try - catch 작성

 6. 공변변환 타입

1) 오버라이딩: 조상메서드 반환타입 -> 자손클랫 반환타입

 7. 얕은 복사 & 깊은 복사

1) 인스턴스 값 복사 & 인스턴스 값 + 참조 객체 복사 

 8. 정의

public class Object{

...

protected native Object clone() throws cloneNotSupportedException;

...

}

 9. 사용

public Object clone(){

   Object obj=null;

try{

obj=super.clone();

}catch(CloneNotSupportedException e) {}

return obj;

      } 

↓ 사용

Point copy=(Point)original.clone();


 5) getClass()

 

 1) 클래스-> 메모리 로더에 의해 동적 메모리 로드

 2) 있으면 객체 참조 반환

    없으면 path경로-> class 객체 변환

 3) 객체 얻는 법

1. 생성된 객체

class cObj = new Card().getClass();

2. 클래스 리터럴

Class cObj = Card.class;

3. 클래스 이름

Class cObj = class.forName("Card");

fronName은 db드라이버를 메모리에 올릴 때 주로 사용




2. String클래스

  특징

 1) 문자열 저장 & 관련 메서드

 2) public finalr class String implements ~{  // 다른 클래스의 조상 불가

private char[] value; // char[] 배열로 문자열 저장

}

 3) 변경 불가능한 클래스 -> StringBuffer클래스

 4) 문자열 비교

1. 리터럴: 재사용,     Stirng str1 = "abc";

2. 생성자: 메모리할당, String str1= new String("abc");


 5) 문자열 비교 오버라이딩: equals(), toString()

 6) 문자열 리터럴

1. String 인스턴스 그자체, 내용 변경 x

2. JVM내 상수저장소에 저장


 7) 초기화 

     string : "" // 빈문자열: 가능

     char   :''  //  빈문자열: 불가


 8) String.format(): 형식화된 문자열

String str = String.format("%d 더하기 %d는 %d입니다.",3,5,3+5)


 9) 기본값-> String변환

1) valueOf

   String.valueOf(i);


 10) String -> 기본값

1) pareseInt

Integer.parseInt("100");

2) valueOf

Integer.valueOf(i); // 오토박싱(반환타입:Integer -> int)


 11) hashCode(): 문자열 기반 생성



3. StringBuffer클래스 & StringBuilder 클래스


  클래스

  특징

 1) StringBuffer 클래스

 1. 문자열 변경 가능 

 2. StringBuffer append() {}

StringBuffer sb = new StringBuffer("abc");

sb.append("123");

 3. 배열 크기 작으면 배열 생성 -> 배열 값 복사

 4. toString(): 오버라이딩o->인스턴스 변수 ->문자열 오버라이딩           

    equals()  : 오버라이딩x  

     

 

 toString() 

 eqauls(Object obj)

 String

  문자열 오버라이딩

  문자열 오버라이딩

 StringBuffer

  문자열 오버라이딩 

 오버라이딩x-> 참조 변수값

          

 5. 멀티쓰레드에 안전하도록 동기화 되어있음

 2) StringBuilder


 1) StringBuffer - 동기화 = StringBuilder



4. Math 클래스

1) 수학계산

2) 구성: 상수 2개, static 메서드


5. 래퍼(Wrapper) 클래스


 특징

 1) 기본형 값-> 객체 변환

 2) 생성자 인자: 변환할 값

 3) equals() 오버라이딩: 값 비교

 4) toString() 오버라이딩: 문자열 비교

 5) 비교연산자 x -> compareTo()

 

 6) 상속계층도


 

 7) 오토박싱 & 언박싱

오토박싱: 기본형 값-> 래퍼클래스 객체

언박싱  : 반대 

※ 지네릭스에서도 사용




2. 유용한 클래스


1. java.util.Objects 클래스

 1) Object클래스의 보조 클래스

2) 모든 메서드 static

3) 객체 비교 & Null체크에 유용

4) compare()  

static int compare(Object a, Object b, Comparator c)

같으면 0, 크면 양수

5) eqauls()

public static voolean equals(Object a, Object b){

return (a==b) || (a!=null && a.equals(b)) 

}










※ 남궁성 강사님 수업과 '자바의 정석'을 토대로 정리하였습니다.




http://book.naver.com/bookdb/book_detail.nhn?bid=10191151