[Java] 주요 패키지 내 클래스

주요 패키지

java.lang

자바 프로그래밍에 필요한 기본적인 클래스와 인터페이스 제공.

import문을 사용하지 않아도 자동으로 호출.

 

java.util

날짜, 시간 등 다양한 유틸리티 클래스와 인터페이스 제공

 

java.io

입출력하는 클래스와 인터페이스 제공

 

java.awt & javax.swing

GUI 프로그래에 필요한 클래스와 인터페이스 제공

 

Object 클래스

java.lang 패키지에 속한 클래스.

모든 클래스에 강제로 상속.

아무 클래스도 상속받지 않는 유일한 클래스로 계층 구조 상 최상위 클래스.

 

주요 메소드

boolean equals(Object obj) obj가 가리키는 객체와 현재 객체를 비교하여 같으면 true 리턴
Class getClass() 현 객체의 런타임 클래스를 리턴
int hashCode() 현 객체에 대한 해시 코드 값 리턴
String toString() 현 객체에 대한 문자열 표현을 리턴(출력용)
void notify() 현 객체에 대해 대기하고 있는 하나의 스레드를 깨운다.
void notifyAll() 현 객체에 대해 대기하고 있는 모든 스레드를 깨운다.
void wait() 다른 스레드가 깨울 때까지 현재 스레드를 대기하게 한다.

 

객체 비교와 equals() 메소드

==연산자

기본 타입의 값을 비교

두 레퍼런스가 동일한 객체를 가리키는지 비교(내용물이 같은지 비교하는 것 아님)

 

equals() 메소드

객체 비교

 

toString() 메소드

객체를 문자열로 변환하는 메소드 → 객체가 가지고 있는 정보나 값을 문자열로 만들어 리턴

 

클래스 작성할 때 toString()으로 자신만의 문자열 리턴

Object의 toString()을 오버라이딩하여 자신만의 문자열을 리턴

+) 오버라이딩 : 슈퍼 클래승에서 구현된 메소드를 서브 클래스에서 자신의 특징에 맞게 다시 구현

public String toString();

※ public으로 선언해야 한다. ※

 

Wrapper 클래스

int, char, double 등 8개의 기본 타입을 객체로 다루기 위해 만들어진 8개의 클래스를 통칭한 것

기본타입 byte short int long char float double boolean
Wrapper 클래스 Byte Short Integer Long Character Float Double Boolean

java.lang 패키지에서 제공

 

Wrapper 클래스 객체 생성

기본 타입의 값을 인자로 하여 정적 메소드인 valueOf()를 호출하여 생성

Integer i = Integer.valueOf(10);
Character c = Character.valueOf('c');

문자열로 Wrapper 객체 생성 가능

Integer i = Integer.valueOf("10");

※ "10" 등 String으로 들어가도 valueOf를 이용하면 객체화 가능 ※

 

Wrapper 클래스 활용

static int bitCount(int i) 정수 i의 이진수 표현에서 1의 개수 리턴
float floatValue() float 타입으로 값 리턴
int intValue() int 타입으로 값 리턴
long longValue() long 타입으로 값 리턴
short shortValue() short 타입으로 값 리턴
static int parseInt(String s) 문자열 s를 10진 정수로 변환한 값 리턴
static int parseInt(String s, int radix) 문자열 s를 지정된 진법의 정수로 변환한 값 리턴
static String toBinaryString(int i) 정수 i를 이진수 표현으로 변환한 문자열 리턴
static String toHexString(int i) 정수 i를 16진수 표현으로 변환한 문자열 리턴
static String toOctalString(int i) 정수 i를 8진수 표현으로 변환한 문자열 리턴
static String toString(int i) 정수 i를 문자열로 변환하여 리턴
static Integer valueOf(int i) 정수 i를 담은 Integer 객체 리턴
static Integet valueOf(String s) 문자열 s를 정수로 변환하여 담고 있는 Integer 객체 리턴

int intValue() : int 타입 값 리턴

Integer i = Integer.valueOf(10);
int ii = i.intValue();

ii = 10의 값이 들어간다.

 

static int parseInt(String s) : 문자열을 정수로 변환

int i = Integer.parseInt("123");

문자열 "123"을 10진 정수로 변환한 123이 i에 들어간다.

 

parseInt(), parseBoolean(), parseDouble() 메소드는 모두 static타입 ▶ Wrapper 클래스의 이름으로 바로 메소드 호출

Wrapper 클래스는 해당 타입으로 변환하는 메소드만을 제공.

 

기본 타입 값을 문자열로 변환

String s1 = Integer.toString(123);
String s2 = Double.toString(3.14);
String s3 = Character.toString('a');

※ Object 클래스에서의 toString과는 다르다. ※

 

박싱과 언박싱

박싱 : 기본 타입의 값을 Wrapper 객체로 변환하는 것

언박싱 : Wrapper 객체 → 기본 타입의 값

※ JDK 1.5부터 자동으로 박싱, 언박싱이 이루어진다 ▶ 자동 박싱, 자동 언박싱 ※

 

String 클래스

생성자를 통해 여러 가지 방법으로 String 객체 생성

 

스트링 리터럴과 new String()

스트링 리터럴

자바 내부에서 리터럴 테이블로 관리해 동일한 리터럴 공유

String a = "Hello";
String b = "Java";
String c = "Hello";

"Hello"와 "Java"는 자바 가상 기계의 스트링 리터럴 테이블에 생성

a와 c는 리터럴 테이블에서 같은 Hello 공유

 

new String()

힙 메모리에 생성. new를 이용하여 생성되는 다른 객체와 동일

String d = new String("Hello");
String e = new String("Java");
String f = new String("Java");

스트링 객체 d, e, f는 힙 메모리에 독립적으로 생성

 

※ 스트링 리터럴, newString() 둘 다 수정이 불가능 ※

String a = new String("Hello");
String b = a.concat("World");	// HelloWorld 리턴

a = a.concat("World");	// a는 새로 리턴된 "HelloWorld" 가리킴

 

String 활용

int compareTo(String anotherString) - 문자열 비교

현재 스트링과 매개변수로 주어진 anotherString의 스트링을 사전 순으로 비교

 

0 : 두 문자열 같을 때

음수 : 현재 문자열이 anotherString의 문자열보다 사전에서 먼저 나올 때

양수 : 현재 문자열이 anotherString의 문자열보다 사전에서 뒤에 나올 때

 

※ equals() 메소드 : 두 문자열이 같은지만 비교할 때 사용 ※

 

String concat(String str) - 문자열 연결

"문자열".concat("새로운 문자열") 로 연결 가능

 

▶ +연산자로 문자열 연결할 때) 피연산자에 문자열 하나만 있으도 문자열 연결 가능

 

String trim() - 공백 제거

문자열 앞뒤에 있는 공백 문자를 제거한 새로운 문자열 리턴

 

※ 문자열 중간에 있는 공백 제거는 불가능 ※

※ 스페이스, \t 제거 가능 ※

 

char charAt(int index) - 문자열의 문자

특정 위치에 있는 문자을 알아낼 때 사용

 

StringBuffer 클래스

String 객체와 StringBuffer 객체 차이

String 객체 : 내부의 문자열을 수정 불가능.

StringBuffer 객체 : 문자열의 수정 가능.

                      ▶문자열을 저장하는 가변 버퍼를 가지고 있기 때문

                      ▶문자열의 크기 증가하면 내부 버퍼 크기 자동 조절

 

+) String 클래스 : 간단한 문자열을 처리할 때 사용

    StringBuffer 클래스 : 문자열의 길이가 길거나 수시로 변하는 경우에 사용

          

StringBuffer 객체 생성

StringBuffer sb = new StringBuffer("java");

 

StringBuffer 클래스 생성자

StringBuffer() 초기 버퍼의 크기가 16인 스트링 버퍼 객체 생성
StringBuffer(charSequence seq) seq가 지정하는 일련의 문자들을 포함하는 스트링 버퍼 생성
StringBuffer(int capacity) 지정된 초기 크기를 갖는 스트링 버퍼 객체 생성
StringBuffer(String str) 지정된 스트링으로 초기화된 스트링 버퍼 객체 생성

 

StringTokenizer 클래스

하나의 문자열을 여러개의 문자열로 분리하기 위해 사용

생성자를 통해 문자열이 전달되고, 생성자에서 문자열 분리가 바로 이루어진다.

 

구분 문자 : 문자열을 분리할 때 사용되는 기준 문자

토큰 : 구분 문자로 분리된 문자열

 

String str = "abc=def&ghi=jkl&mno=pq";
StringTokenizer st = new StringTokenizer(str, "&");	//구분문자 : '&'

int n = st.countTokens();	//몇 개의 토큰으로 분리되었는지 알아냄.

for(int i=0; i<n; i++){
	String token = st.nextToken();	// 토큰 하나씩 얻기
    System.out.println(token);
}

※ 구분 문자를 '&'대신 '&='를 주게 되면 '&'와 '='를 모두 구분 문자로 사용 ※

 

메소드 설명
int countTokens() 토큰의 개수 리턴
boolean hasMoreTokens() 다음 토큰이 있으면 true 리턴
Stirng nextToken() 스트링 토크나이저에 들어있는 다음 토큰 리턴

 

Math 클래스

기본적인 산술 연산을 제공하며 모든 멤버 베소드는 static 타입

 

주요 메소드

random() - 난수 발생0

: 0.0보다 크거나 같고 1.0보다 작은 임의의 double 값 리턴(Math.random( )만 사용하였을시)

 

static double sqrt(double a) - 실수 a의 제곱근 리턴

static long round(double a) - 반올림. 실수 a를 소수 첫째 자리에서 반올림한 정수를 long 타입으로 반환

static double abs(double a) - 실수 a의 절대값 리턴

static double cos(double a) - 실수 a의 cosine 값 리턴

 

Calendar 클래스

시간과 날짜 정보를 저장. set(), get() 메소드를 이용하여 날짜나 시간을 알아낼 때 사용.

 

Calendar 객체 생성하여 날짜와 시간 알아내기 & 설정

Calendar now = Calendar.getInstance();

▶ Calendar 클래스는 추상 클래스이기 때문에, new Calendar() 대신 getInstance() 메소드 사용해 객체 생성

int year = now.get(Calendar.YEAR);
int month = now.get(Calendar.MONTH) + 1;

▶ 1월달은 0을 리턴하기 때문에 month에 1을 더해야 한다.

 

Calendar new = Calendar.getInstance();
new.clear();
new.set(2022, 3, 17);
new.set(Calendar.HOUR_OF_DAY, 20);
new.set(Calendar.MINUTE, 30);

 

Calendar 클래스의 static 상수

YEAR 년도 DAY_OF_MONTH 한 달의 날짜
MONTH 달(0~11) DAY_OF_WEEK 한 주의 요일
HOUR 시간(0~11) AM_PM 오전 오후 구분
HOUR_OF_DAY 24시간 기준으로 한 시간 MINUTE
SECOND MILLISECOND 밀리초
반응형

'Back-End > Java' 카테고리의 다른 글

[Java] indexOf(), substring(), split(), charAt() - 문자열 추출 방법  (2) 2023.01.04
[Java] for-each문 사용법  (0) 2023.01.04
[Java] 상속(2)  (2) 2022.03.02
[Java] 상속(1)  (1) 2022.02.21
[Java] static 멤버와 final  (1) 2022.02.18