본문 바로가기
Develop/Bit Camp & 자바의 정석

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

by jaekk 2018. 5. 20.

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

'Develop > Bit Camp & 자바의 정석' 카테고리의 다른 글

[6.스프링+MyBatis]1.테이블 생성 및 개발 준비  (0) 2018.08.17
16. 네트워킹  (0) 2018.05.23
11. 컬렉션 프레임워크  (0) 2018.05.20
12-2. 애너테이션  (0) 2018.05.09
오라클설치  (0) 2018.05.08

댓글