모듈과 패키지 개념, 자바 패키지 활용

FinalForever·2025년 12월 1일

JDK의 주요 패키지

자바 개발 도구인 JDK(Java Development Kit)는 화면 출력, 키 입력, 네트워킹 등 프로그램 개발에 필요한 기본적인 기능과 다양한 응용 기능을 구현한 많은 클래스 및 인터페이스를 포함하는 표준 패키지를 제공하며, 이를 자바 API라고 한다.

자동임포트설명
java.lang - System문자열, 수학 함수, 입출력 등과 같이 자바 프로그래밍에 필요한 기본적인 클래스와 인터페이스 제공. 이 패키지의 클래스들은 특별히 import문을 사용하지 않아도 자동으로 임포트됨
java.util날짜, 시간, 벡터, 해시맵 등의 유틸리티 클래스와 인터페이스
java.io키보드, 모니터, 프린터 등의 입출력 클래스와 인터페이스
java.awtGUI 프로그래밍에 필요한 AWT 클래스와 인터페이스
javax.swing스윙 GUI 프로그래밍에 필요한 클래스와 인터페이스

Object 클래스의 특징

Object는 java.lang 패키지에 속한 클래스이며, 모든 클래스는 강제로 Object를 상속 받는다. Object만이 유일하게 아무 클래스도 상속받지 않는, 자바 클래스 계층 구조의 최상위 클래스이다.

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

toString() 메소드, 객체를 문자열로 반환

Object에는 객체를 문자열로 변환하는 toString()이 있으며, 각 클래스는 toString()을 오버라이딩하여 자신만의 문자열을 리턴함.

public String toString(); 	//public으로 선언해야 함에 특히 주의 

Wrapper 클래스

개념

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

Wrapper 클래스의 활용

Wrapper 클래스에는 기본 타입 값을 문자열로 변환하거나, 문자열을 기본 타입 값으로 변환하는 메소들이 주를 이루고 있다.

Integer 클래스의 주요 메소드

메소드설명
static int bitCount(int i)정수 i의 이진수 표현에서 1의 개수 리턴
double doubleValue()double 타입으로 값 리턴
static intValue()int 타입으로 값 리턴
static int parseInt(String s)스트링 s를 10진 정수로 변환한 값 리턴
static int pareseInt(String s, int radix)스트링 s를 지정된 진법의 정수로 변환한 스트링 리턴
static String toBinaryString(int i)정수 i를 이진수 표현으로 변환한 스트링 리턴
static String toHexString(int i)정수 i를 16진수 표현으로 변환한 스트링 리턴
static String toString(int i)정수 i를 스트링으로 변환하여 리턴

박싱(boxing)과 언박싱(unboxing)

기본 타입의 값을 Wrapper 객체로 변환하는 것을 박싱(boxing)이라 하고, 반대의 경우를 언박싱(unboxing)이라고 함.

Integer ten = Integer.valueOf(10);
int n = ten.intValue();

자동 박싱(auto boxing)

Integer ten = 10;	// 자동 박싱. Integer ten = Integer.valueOf(10);과 동일
int n = ten;		// 자동 언박싱. int n = ten.intValue();과 동일

String과 StringBuffer 클래스

String 클래스의 주요 메소드

메소드설명
char charAt(int index)index 인덱스에 있는 문자 값 리턴
int compareTo(String anotherString)두 스트링을 사전적 순서 기준 비교, 같으면 0, 현 스트링이 anotherString보다 먼저 나오면 음수, 아니면 양수 리턴
String concat(String str)str 스트링을 현재 스트링 뒤에 덧붙인 스트링 리턴
boolean contains(CharSequence s)s에 지정된 문자들을 포함하고 있으면 true 리턴
int length()스트링의 길이(문자 개수) 리턴
String replace(Charsequence target, Charsequence replacement)target이 지정하는 일련의 문자들을 replacement가 지정하는 문자들로 변경한 스트링 리턴
String[] split(String regex)정규식 regex에 일치하는 부분을 중심으로 스트링을 분리하고 분리된 스트링을 배열에 저장하여 리턴
String subString(int beginIndex)beginIndex 인덱스부터 시작하는 서브 스트링 리턴
String toLowerCase()소문자로 변경한 스트링 리턴
String toUpperCase()대문자로 변경한 스트링 리턴
String trim()스트링의 앞뒤 공백 문자 제거한 스트링 리턴

StringBuffer 클래스

StringBuffer 클래스는 스트링을 다루는 클래스로서, 내부에 가변 크기의 버퍼를 가지고 문자의 개수에 따라 버퍼 크기를 자동 조절. 생성된 스트링의 수정이 가능.

StringBuffer sb = new StringBuffer("Java"); 	//"Java"를 가진 StringBuffer 객체

StringTokenizer 클래스

StringTokenizer 클래스는 문자열을 분리하기 위해 사용된다. 문자열 분리할 때 사용되는 기준 문자를 구분 문자(delimiter)라고 하고, 구분 문자로 분리된 문자열을 토큰(token)이라고 한다.

ex) 단어는 공백 한 개로 구분되는, 단어의 수를 구하는 로직

import java.util.*;
public class StringTokenizerEx {
	public static void main(String[] args) {
    	Scanner sc = new Scanner(System.in); 
        
        String query = sc.nextLine();
        StringTokenizer st = new StringTokenizer(query, " ");
        
        int n = st.countTokens(); 	//분리된 토큰 개수
        	System.out.println("토큰 개수 =" + n);
       
       while(st.hasMoreTokens()) {	// for(int i=0; i<n; i++)와 동일 
        	String token = st.nextToken();	// 토큰 얻기
            	System.out.println(token);	// 토큰 출력
            
            sc.close();
        		}
        	}
        }

StringTokenizer 클래스의 생성자와 메소드

생성자와 메소드설명
StringTokenizer(String str)str 스트링으로 파싱한 스트링 토크나이저 생성
int countTokens()스트링 토크나이저에 포함된 토큰의 개수 리턴
boolean hasMoreTokens()스트링 토크나이저에 다음 토큰이 있으면 true 리턴
String nextToken()다음 토큰 리턴

Math 클래스

모든 메소드가 static 타입이기 때문에 'Math.메소드' 형태로 사용할 수 있다.

메소드설명
static double abs(double a)실수 a의 절대값 리턴
static double exp(double a)e^2 값 리턴
static double sin(double a)실수 a의 sine 값 리턴
static double random()0.0 크거나 같고 1.0 보다 작은 임의의 실수 리턴
static long round(double a)실수 a를 소수 첫째 자리에서 반올림한 정수를 long 타입으로 변환
static double sqrt(double a)실수 a의 제곱근 리턴

exam Math 클래스 활용

public class MathEx {
	public static void main(String[] args) {
    
    System.out.println(Math.abs(-3.14));	// 절대값 구하기
    System.out.println(Math.sqrt(9.0));		// 제곱근
    System.out.println(Math.exp(2));		// e의 2승
    System.out.println(Math.round(3.14));	// 반올림
    
    // [1, 45] 사이의 정수형 난수 6개 발생
    System.out.print("이번주 행운의 번호는 ");
    
    	for(int i=0; i<6; i++) 
        	System.out.print((int)(Math.random()*45 + 1) + " ");
        
    	}
    }
    

ps. 기초가 중요해요... 그렇죠...? 그렇게 생각하죠?

profile
No More Struggle & Machine Mind

0개의 댓글