The Debugging Chronicles : "코드의 미학"

Mentor JAVA - section15. 기본 API 클래스 본문

JAVA/Mentor JAVA

Mentor JAVA - section15. 기본 API 클래스

sweetseonah1004 2024. 7. 27. 22:03

자바 API(Application Programming Interface) 문서

- Java에서 제공하는 프로그램 개발에 자주 사용되는 클래스 및 인터페이스 모음을 말하며, 라이브러리라고도 부른다.

- 보통 JDK를 설치할 때 함께 설치되었으나, 지금은 분리되어 따로 설치하거나, 사이트를 이용해 확인할 수 있다.

java.lang 패키지

Java 프로그램의 기본적인 클래스를 담고 있는 패키지이며, 다양한 기본 클래스들을 제공한다.

- Object 클래스

Java의 최상위 클래스이며, Java에서 생성되는 코든 클래스는 생성될 때 상속을 하지 않아도 Object를 자동으로 상속받게 되어있다.

 

Object 클래스의 대표적인 메서드

메서드
설명
protected Object clone()
객체 자신을 복사한 후 반환한다.
boolean equals(Object obj)
다른 객체와 자신이 가진 실제 값을 비교한다.
객체끼리의 비교는 해당 객체가 있는 메모리의 위치를 비교하므로 '==' 비교 연산자가 아닌 equals()를 사용하여 데이터를 비교한다.
int hashCode()
객체의 hashCode 값을 반환한다.
hashCode : Java 프로그래밍에서는 new 키워드를 사용해 인스턴스를 만들 경우, 객체 식별을 위한 하나의 정수값
'HashMap' 또는 'HashSet'에서 객체형 데이터를 저장 할 때 equals() 메서드와 함께 동일한 객체인지를 판별할 때 사용한다.
Hash 관련 컬렉션을 사용해 데이터를 저장할 경우, 해당 메서드들은 override하여 구현해 주어야 정확한 객체 비교가 가능하다.
String toString()
객체의 문자 정보를 반환해주는 클래스이다.
print문을 사용할 때 객체를 출력할 경우, 해당 메서드가 자동으로 실행된다.
출력문에 객체를 그대로 넣어도 정보를 출력할 수 있어서 override 하여 객체의 내용 출력에 이용한다.

- String 클래스

문자열을 처리하는 객체형 데이터 타입이다.

기본 데이터 타입들과 마찬가지로 문자열 데이터를 담는 간단한 형식으로 사용하지만, 문자열을 처리하기 위한 다양한 기능들을 가지고 있다.

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

- StringBuffer와 StringBuilder

String 클래스는 최초 지정된 문자열 이후에 값이 추가되면 내부적으로 새로운 메모리를 할당해 새롭게 문자열을 등록하는데, 이때 메모리

사용이 늘어나면서 메모리가 낭비되는 것을 해겨하기 위한 클래스이다.

내부에 여유 공간을 두기 때문에 문자열을 합칠 때 메모리에 새롭게 생성하는 과정을 String보다 크게 생략 가능하다.

Buffer와 Build는 사용하는 기능에서 차이는 없으나 Buffer은 스레드 환경에서 안정성 기능을 추가로 가지고 있다.

(스레드 환경이 아닌 경우에는 Builder의 성능이 좋음)

 
 
 

- Math 클래스

수학에서 자주 사용하는 상수들과 함수들을 미리 구현해놓은 클래스로 Java에서 수학 계산이 필요할 때 주로 사용.

객체를 선언하지 않고 바로 사용이 가능하도록 모든 메서드가 정적 메서드로 이루어져 있다.

메서드
설명
int abs(int a)
double abs(double a)
절대값 계산을 한다.
double ceil(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()
랜덤값을 반환한다.
프로그램이 실행 될 때마다 특정 범위 내에서 하나의 값을 반환해 준다.
범위는 0<= x < 1 사이에 존재하는 실수값 중 하나가 부여된다.

- Wrapper 클래스

기본 자료형을 객체로 다루기 위한 클래스이다.

기본형의 데이터 타입을 클래스로 포장했기 때문에 Wrapper 클래스라고 불린다.

java.lang 패키지에 포함되어있다.

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

· 오토박싱(AutoBoxing)과 오토언박싱(AutoUnBoxing)

박싱 : 기본 타입 데이터를 Wrapper 클래스의인스턴스로 변환하는과정

언박싱 : Wrapper 클래스의 인스턴스에 저장된 값을 기본 타입의 데이터로 꺼내는 과정

ex. 선언 모습 Integer num01 = new Integer(1); // JDK 1.9부터 사용하지 않도록 권고 또는 Integer num02 = Ingeger.valueOf(10);

오토박싱은 일반 변수처럼 선언하고 대입하여 사용한다.

Integer num01 = 10; // 정수를 대입하여 객체 타입 데이터로 감싸준다.

· 문자 타입의 데이터를 숫자 타입의 데이터로 변환

외부로부터 데이터를 받을 때 전송의 편의상 문자 또는 문자열 타입으로 전송받은 데이터를 숫자(정수 또는 실수) 타입의 데이터로

변경하는 기능을 말한다.

데이터 타입
문자형 → 숫자형
byte형
Byte.parseByte("10");
short형
Short.parseShort("10");
int형
Integer.parseint("100");
long형
Long.parseLong("100");
float형
Float.parseFloat("10.33");
double형
Double.parseDouble("30.23");
boolean형
Boolean.parseBoolean("true");

java.util 패키지

프로그램을 개발하는 데 사용할 수 있는 유용한 유틸리티 클래스가 포함되어있다.

날짜와 시간 정보를 제공해 주는 Date 클래스와 Calendar 클래스가 있으며, 최근에는 Calendar 클래스를 주로 사용한다.

- Calendar 클래스 선언

· 추상 클래스여서 new 키워드를 이용하여 선언하지 않고, 생성된 인스턴스를 받아오는 형식으로 선언된다.

Calendar cal = Calendar.getInstance();

- Calendar 클래스 속성

· 여러 가지 상수 필드들이 존재하며, 날짜를 표시하기 위해 자주 사용하는 값들을 상후화하여 관리한다.

상수 필드
YEAR, MONTH, DATE
연도, 월(0~11), 일(1~31)을 나타내는 상수
DAY_OF_MONTH
현재 달의 몇 번째 날인지를 나타내는 상수(1~31)
DAY_OF_WEEK
현재 주의 몇 번째 날인지를 나타내는 상수(1-7), 1은 일요일을 의미
HOUR, MINUTE
시(0-11), 분(0-59)을 나타내는 상수
SECOND, MILLISECOND
초(0-59)와 1/1000초를 나타내는 상수
HOUR_OF_DAY
현재 날의 시각읠 의미하는 상수(0-23)
AM_PM
HOUR가 정오보다 이전이면 0을, 이후이면 1의 값을 가지는 상수
WEEK_OF_MONTH
현재 달의 몇 번째 주인지를 나타내는 상수
WEEK_OF_YEAR
현재 해의 몇 번째 주인지를 나타내는 상수