BOOK

[JAVA] MENTOR JAVA SECTION 15

Minch13r 2025. 1. 22. 17:43

자바 API(Application Programming Interface) 문서

자바에서 제공하는 API는 프로그램 개발에 자주 사용되는 클래스 및 인터페이스 모음을 말하며 라이브러리라고 부른다. 이전에는 자바 개발도구를 설치할 때 함께 설치되었으나, 지금은 분리되어 따로 설치하거나, 사이트를 이용해 확인할 수 있다


java.lang 패키지

java.lang 패키지는 자바 프로그램의 기본적인 클래스를 담고 있는 패키지이다. 가령 우리가 Scanner를 사용하려 한다면 스캐너를 import 해줘야 사용할 수 있었다. 그러나 System, String 등과 같은 클래스는 따로 선언 없이 사용이 가능했다. 그 이유는 기본으로 제공해 주는 java.lang 패키지에 속해 있었기 때문이다.

클래스 용도
Object 자바 클래스의 최상위 클래스로 사용
System 시스템의 표준 입력/출력 장치로부터 데이터를 입력받거나 출력하기 위해 사용
자바 가상 기계를 종료할 때 사용
String 문자열을 저장하고 여러 가지 정보를 얻을 때 사용
StringBuffer /
StringBuilder
문자열을 저장하고 내부 문자열을 조작할 때 사용
Math 수학 함수를 이용할 때 사용

 

위의 표와 같이 java.lang 패키지는 자바의 다양한 기본 클래스들을 제공한다.


 

Object 클래스는 자바의 최상위 클래스이다. 자바에서 생성되는 모든 클래스는 생성될 때 상속을 하지 않아도 Object를 자동으로 상속받게 되어있다. 따라서 클래스를 생성하면 Object가 가지고 있는 여러 메서드를 그대로 사용하거나 override하여 사용할 수 있게 됩니다. Object 클래스가 지닌 대표적인 메서드는 다음과 같다.

메서드 설명
protected Object clone() 객체 자신을 복사한 후 변환
boolean equals(Object obj) 다른 객체와 자신이 가진 실제 값을 비교
int hashCode() 객체의 hashCode 값을 반환
String toString 객체 자신의 정보를 반환

 

자바에서는 기본 데이터들의 동등 비교를 위해서 '==' 비교 연산자를 사용한다. 하지만 객체에서의 의미는 조금 다르다. 객체를 동등 비교할 경우, 해당 객체의 값을 비교하는 것이 아니라, 객체가 메모리에 있는 위치를 비교하게 된다. 따라서 참조형 데이터의 비교 연산에는 적절치 못하므로 객체의 데이터를 비교할 떄는 equals() 메서드를 override 하여 사용한다. 대표적인 예로 우리가 사용하는 String 클래스가 있다. String 클래스는 데이터를 비교할 때 equals를 사용해 비교한다.

 

사람은 태어나면 누구든지 주민등록번호를 부여받는다. 이거는 사람에게 부여되는 고유번호다. new 키워드를 사용해 인스턴스를 만들 경우, 주민등록번호처럼 객체를 식별하는 하나의 정수값을 'hashCode'라고 부른다. 이는 객체마다 고유한 값을 가지게 되는데 hashCode() 메서드는 그것을 반환하는 메서드이다. HashMap 또는 HashSet에서 객체형 데이터를 저장할 때 equals() 메서드와 함꼐 동일한 객체인지를 판별하는 데 사용한다.


 

toString() 메서드는 객체의 문자 정보를 반환해 주는 클래스이다. print 문을 사용해 객체를 출력할 경우, 해당 메서드가 자동으로 실행되어 객체의 정보를 반환해 주고 출력된다. 따라서 해당 메서드를 재정의해서 사용하면 원하는 객체의 정보를 쉽게 출력할 수 있다.

Object obj = new Object();
System.out.println(obj);

 

이와 같이 Object 클래스를 선언한 후 출력문에 그대로 삽입하면 toString() 메서드가 자동으로 실행되고 결과는 다음과 같다.

java.lang.Object @ 7ad041f3
클래스명		16진수 해시코드

String 클래스는 문자열을 처리하는 객체형 데이터 타입이다. 일반적으로 기본 데이터 타입들과 마찬가지로 문자열 데이터를 담는 간단한 형식으로 사용하지만, 문자열을 처리하기 위한 다양한 기능들을 가지고 있다. String 인스턴스는 한 번 생성되면 그 값을 읽기만 하고 변경할 수 없다.

메서드 설명
int length() 문자열의 길이를 반환
char charAt(int index) 문자열을 하나의 단어 단위로 출력
파라미터로는 추출한 문자열의 위치를 받음
int indexOf(String ch)
int indexOf(int ch)
문자열에 포함된 단어 또는 문자열의 위치를 앞에서부터 검색했을 때 일치하는 위치의 인덱스 값을 반환 (없을 때는 -1을 반환)
String replace(변경할 문자, 변경 문자) 단어 또는 문장에 있는 특정 단어를 변경
String substring(int beginIndex) 문자열을 원하는 위치에서 자를 때 사용
입력된 시작 위치부터 문자열의 마지막까지 반환
String substring(int beginIndex, int endIndex) 문자열을 입력된 시작 위치부터 마지막 위치 전까지의 값을 리턴

 

charAt() 메서드를 사용하면 우리가 원하는 위치의 문자를 문자열에서 추출할 수 있다.

 

indexOf(0 메서드를 사용해 저장된 문자열 중에서 우리가 찾는 특정 단어 또는 문장의 시작 위치를 알려주는 메서드이다. 만약 찾는 단어가 없으면 해당 메서드는 -1을 반환한다.

 

replace() 또는 replaceAll 메서드는 특정 문자 및 문자열을 원하는 단어로 변경해주는 메서드이다. replace보다 기능상의 이점이 있어 replaceAll을 주로 사용한다. replaceAll (변경 대상, 변경할 단어); 이렇게 구현하면 된다.

 

자바에서 문자열을 처리하는 변수는 String 객체이다. String 클래스는 최초 지정된 문자열 잉후에 값이 추가되면 내부적으로 새로운 메모리를 할당해 새롭게 문자열을 등록한다. 처음 문자열을 선언한 후 추가하면 기존의 메모리 주소가 아닌 새로운 주소에 추가된 문자가 저장된다. 따라서 문자열을 많이 사용할수록 메모리 사용이 늘어나 메모리가 낭비될 수 있다. 이런 문제점을 해결하기 위해 가변 속성을 지닌 StringBuffer 또는 StringBuilder클래스를 사용한다. 이 둘은 내부에 여유 공간을 두기 때문에 문자열을 합칠 때 메모리에 새롭게 생성하는 과정을 String보다 생략할 수 있다. 보통 StringBuilder를 권장한다.

메서드 명 설명
append(String str) 기존 문자열 뒤에 더하여 반환
delete(int start, int end) 시작 위치부터 끝 위치 전까지 삭제
insert(int offset, String str) 시작 위치부터 문자열을 삽입
reverse() 문자열을 반대로 출력

 

Math 클래스는 수학에서 자주 사용하는 상수들과 함수들을 미리 구현해 놓은 클래스로 자바에서 수학 계산이 필요할 때 주로 사용된다. 객체를 선언하지 않고 바로 사용할 수 있도록 해당 클래스가 제공하는 모든 메서드는 모두 정적 메서드로 이루어져 있다.

메서드 설명
int abs(int a)
double abs(double a)
절대값 계산
double cell(double a) 올림 계산
double floor(double a) 버림 계산
double round(double a) 반올림 계산
int max()
double max()
최대값을 구하는 계산
int min(int a, int b)
double max(double a, double b)
최소값을 구하는 계산
double random 랜덤값을 반환

 

Math.random() 메서드는 프로그램이 실행될 때마다 특정 범위 내에서 하나의 값으 반환해 준다.

범위는 0 <= x < 1 과 같다.

int randValue = (int)(Math.random() * 30)

-> 0 <= x < 30.0


int randValue = (int)(Math.random() * 30) + 1

-> 1 <= x <= 30

 


프로그램에 따라 기본 타입의 데이터를 객체형으로 표현해야 하는 경우가 있다. 이런 경우 자바에서는 기본 자료형을 객체로 다루기 위한 클래스를 제공하는데, 이러한 클래스를 Wrapper 클래스 라고 한다. Wrapper 클래스라고 불리는 이유는 기본형의 데이터 타입을 클래스로 포장했기 때문이다.

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

 

Wrapper 클래스도 데이터 타입이지만 기본적으로 클래스이기에 객체를 선언해서 사용해야 한다.

Integer num01 = Integer.valueOf(10);

 

기본 타입의 데이터를 Wrapper 클래스의 인스턴스로 변환하는 과정을 박싱이라 하고 Wrapper 클래스의 인스턴스에 저장된 값을 기본 타입의 데이터로 꺼내는 과정을 언박싱이라고 한다. JDK 1.5부터는 박싱과 언박싱이 필요한 상황에 자바 컴파일러가 자동으로 처리해 주는데, 이를 오토박싱과 오토언박싱이라고 부른다.


java.util 패키지

java.util 패키지에는 프로그램을 개발하는 데 사용할 수 있는 유용한 유틸리티 클래스가 포함되어 있다. 특히 날자와 시간 정보를 제공해 주는 Date 클래스와 Calendar 클래스가 있다. 최근에는 날자를 표현할 때 Calendar 클래스를 권장하고 있다.

Calendar cal = new Calendar(); // 에러
Calendar cal = Calendar.getInstacne(); // OK

 

Calendar 클래스에는 여러 가지 상수 필드들이 존재한다. 날짜를 표시하기 위해 자주 사용하는 값들을 상수화하여 관리한다.

'BOOK' 카테고리의 다른 글

[JAVA] MENTOR JAVA SECTION 17  (3) 2025.01.24
[JAVA] MENTOR JAVA SECTION 16  (2) 2025.01.23
[JAVA] MENTOR JAVA SECTION 14  (1) 2025.01.21
[JAVA] MENTOR JAVA SECTION 13  (2) 2025.01.20
[JAVA] MENTOR JAVA SECTION 12  (2) 2025.01.19