본문 바로가기
Programming/Java

6장. 패키지와 활용 #2 주요 클래스

by jaegom 2020. 6. 15.

 

1. Object 클래스

  • java.lang.Object, 모든 클래스가 상속받는다.
  • Object 클래스는 유일하게 아무 클래스도 상속받지 않는 최상위 클래스
  • 주요메소드

  • hashCode(), toString() : 객체의 해시 코드 값, 객체를 나타내는 문자열 정보 제공 cf) 해시 코드 값은 객체가 생성될 때 할당받는 고유한 정수값
  • getClass() : 객체의 클래스 정보를 담은 Class 객체를 리턴, Class 객체의 getName()을 호출하면 객체의 클래스 명을 알 수 있다.
  • Object에는 객체를 문자열로 변환하는 toString()이 있으며, 각 클래스는 toString()을 오버라이딩(메소드 재정의)하여 자신만의 문자열을 리턴할 수 있다.

2. equals() 메소드

  • ==는 두 객체의 레퍼런스 변수가 같은지 비교한다
  • equals()는 두 객체의 내용이 같은지 비교를 하며, 어떤 내용을 비교할 것인지를 오버라이딩할 수 있다.

3. Wrapper 클래스

  • 기본타입(primitive type) 8개를 객체로 다루기 위해 기본 타입별 객체화 타입이 존재한다. 그것이 Wrapper클래스

  • 생성 방법 : Integer i = new Integer(10), Character c = new Character('c'), Boolean b = new Boolean(true)
  • Character를 제외한 나머지 Wrapper 클래스의 경우도 문자열로 Wrapper 객체를 생성할 수 있다.
  • 용도는 대부분 Wrapper클래스의 메소드로 기본 타입 값을 문자열로 변환하거나 문자열을 기본 타입 값으로 변환하는 것들이다. 대부분 static 메소드이므로 Wrapper 객체로 바로 호출 가능.

 

4. Boxing과 Unboxing

  • 기본 타입의 값을 Wrapper 객체로 변환하는 것을 Boxing, 반대를 Unboxing

ex)

Integer ten = new Integer(10); //Boxing

int n = ten.intValue(); //Unboxing

  • JDK 1.5부터 둘 다 자동으로 이루어진다. 다음과 같이 작성해도 동일하다

ex)

Integer ten = 10;

int n = ten;

 

5. String 클래스

  • String 클래스는 문자열을 나타내고, String literal은  String 객체로 처리된다.

ex)

//str1, str2, str3 모두 'abcd' 동일

String str1 = "abcd"

char[] data = {'a', 'b', 'c', 'd'}

String str2 = new String(data);

String str3 = new String('abcd');

  • String literal과 new String() 객체는 서로 다르게 관리된다.
  • String literal은 JVM의 literal table로 관리하며, 동일한 리터럴은 공유시킨다(String a = 'hello' String b = 'hello' -> a와 b를 동일한 리터럴로 공유시킨다).
  • new String()은 힙 메모리에서 별도로 관리한다(레퍼런스 변수, 각각 내용이 같아도 각각 메모리 부여)
  • String 객체는 수정이 불가능하며 보통 추가로 객체를 생성한다. 굳이 객체를 수정하려면 이런식으로 한다

ex) String s = 'hello'; s = s.concat("java"); -> s는 'hellojava'

  • String 객체의 메소드들은 자주 쓰인다, 주요 메소드들은 다음과 같다.

 

6. StringBuffer 클래스

  • 내부에 가변 크기의 버퍼를 가지고 문자의 개수에 따라 버퍼 크기를 자동 조절한다. 그러므로 String의 수정이 가능하다. 자주 바꾸는 String이면 StringBuffer로 선언하자.

ex)

StringBuffer sb = new StringBuffer("This");

sb.append(" is pencil. ");

sb.insert(7, " my");

sb.replace(8,10,"your");

System.out.println(sb); >> This is your pencil

 

7. StringTokenizer 클래스

  • 문자열을 구분자를 갖고 토큰으로 분리하기 위해 사용되는 클래스

ex)

String q = "name=jaeshik&addr=seoul&age=21"

StringTokenizer st = new StringTokenizer(q, "&");

//st 객체는 "name=jaeshik", "addr=seoul", "age=21" 토큰 3개로 구성된다.

//구분자를 "&="로 했으면 name, jaeshik, addr, seoul, age, 21 싹다 분리됨.

8. Math 클래스

  • 각종 수학 관련 메소드 제공
  • 대표적으로 난수발생(java.util.Random도 존재)

ex)

Math.random() ->0.0<=x<1.0인 double타입 x를 리턴

ex)

import java.util.*

Random r = new Random();

int n = r.nextInt(); // 음수, 양수, 0 포함하여 정수 범위의 난수

itn m = r.nextInt(100); // 0~99 난수

 

댓글