자바(JAVA)/미니 프로젝트 & 기초 공부

Java 기초 또 다시 공부하기 16일차 - 기본 API 클래스(java.lang 패키지)

개발학생 2025. 6. 20. 15:49
반응형

*자바 API 도큐먼트

  • API(Application Programming Interface)
    : 라이브러리(library)라고도 하며, 프로그램 개발에 자주 사용되는 클래스/인터페이스의 모음을 의미
    -> String 클래스와 System 클래스도 모두 API에 속함
  • API는 굉장히 방대하므로, 필요할 때마다 API Document에서 찾아 써야 함 
    -> API Document: 방대한 자바 표준 API 중 우리가 원하는 API를 쉽게 찾아 이용할 수 있도록 도와줌
        HTML 페이지로 작성되어 있으며, Java 17의 도큐먼트 페이지는 아래와 같음
        https://docs.oracle.com/en/java/javase/17/docs/api/index.html 
 

Overview (Java SE 17 & JDK 17)

This document is divided into two sections: Java SE The Java Platform, Standard Edition (Java SE) APIs define the core Java platform for general-purpose computing. These APIs are in modules whose names start with java. JDK The Java Development Kit (JDK) AP

docs.oracle.com

 

*java.lang 패키지

* 주요 클래스 목록

  • API Document에서 찾아보고, 어떤 기능을 제공하는지 읽고 이해하는 것이 더 중요
클래스 용도
Object - 자바 클래스의 최상위 클래스로 사용
System - 표준 입력 장치(키보드)로부터 데이터를 입력받을 때 사용
- 표준 출력 장치(모니터)로 출력할 때 사용
- JVM(자바 버추얼 머신)을 종료할 때 사용
- Garbage Collection(가비지 컬렉션)를 실행 요청할 때 사용
Class - 클래스를 메모리로 로딩할 때 사용
String - 문자열을 저장하고 여러 가지 정보를 얻을 때 사용
Wrapper Byte, Short, Character - 기본 타입의 데이터를 갖는 객체를 만들 때 사용
Integer, Float, Double - 문자열을 기본 타입으로 변환할 때 사용
Boolean, Long - 입력값 검사에 사용
Math 수학 함수를 이용할 때 사용

1) Object 클래스

  • 클래스 선언 시 extends 키워드로 상속하지 않아도, 암시적으로 이 클래스를 상속함
    -> 자바의 모든 클래스는 Object 클래스의 자식 or 자손 클래스이기 때문(Object가 자바 최상위 부모 클래스)

(1) 객체 비교 메서드(equals())

  • 일반적으로 하위 클래스에서 오버라이딩(재정의)하여 논리적으로 동등한지 비교할 때 사용
  • 두 객체의 번지를 비교하여 논리적으로 동등하면 true를 리턴하고, 그렇지 않으면 false 리턴 
    -> 단 String 객체에서 오버라이딩 할 경우, 문자열이 동일하면 true 그렇지 않으면 false 리턴

객체 비교 메서드 equals() 예시: 자바 컴파일러 사이트

(2) 객체 해시코드(hashCode())

  • 객체 해시코드: 객체를 식별하는 하나의 정수값
    -> 객체 메모리 번지를 이용하여 해시코드를 만들어 리턴하는 메서드(객체마다 다른 값을 가짐)
  • HashSet, HashMap, Hashtable 같은 해시 기반 컬렉션에서 객체를 저장하거나 비교할 때 사용
  • equals()를 오버라이딩했다면 반드시 hashCode()도 함께 오버라이딩
    -> 둘의 리턴값이 모두 같아야 같은 객체

객체 해시코드 hashCode() 예시: 자바 컴파일러 사이트

(3) 객체 문자 정보(toString())

  • 객체를 문자열로 표현한 결과(객체의 문자 정보)를 반환

객체 문자 정보 toString() 예시: 자바 컴파일러 사이트

2) System 클래스

  • 운영체제의 일부 기능을 이용 가능한 클래스
    -> 프로그램 종료, 키보드 입력, 모니터 출력, 현재 시간 읽기 
  • 모든 필드와 메서드는 '정적(static)'으로 구성되어 있음

(1) 프로그램 종료(exit())

  • 강제적으로 JVM을 종료할 때 호출(현재 실행 프로세스를 강제 종료)
  • exit() 안에 int 매개값(종료 상태값)을 지정하여 사용
    -> 정상 종료일 경우 exit(0)과 같이 사용

프로그램 종료 exit() 예시: 자바 컴파일러 사이트

(2) 현재 시각 읽기(currentTimeMillis(), nanoTime())

  • 컴퓨터 시간으로부터 현재 시간을 읽어서, 밀리세컨드(1/1000초) 단위와 나노세컨드(1/10의 9승) 단위의 long값 리턴
    -> 주로 프로그램 실행 소요 시간 측정에 사용

현재 시각 읽기(currentTimeMillis(), nanoTime()) 예시: 자바 컴파일러 사이트

3) Class 클래스

  • 자바는 클래스와 인터페이스의 메타 데이터를 이것으로 관리
    -> 메타 데이터: 클래스 이름, 생성자 정보, 필드 정보, 메서드 정보

(1) Class 객체 얻기(getClass(), forName())

  • 프로그램에서 Class 객체 정보를 얻는 방법

Class 객체 얻기(getClass(), forName()) 예시: 자바 컴파일러 사이트

(2) 클래스 경로를 활용해서 리소스 절대 경로 얻기

  • 클래스변수명.getResource("경로").getPath();

4) String 클래스

  • 문자열 생성/추출/비교/찾기/분리/변환 가능

(1) String 생성자

// String(char[] value): 문자 배열로부터 문자열 생성
char[] letters = {'안', '녕', '하', '세', '요'};
String greeting = new String(letters);
System.out.println(greeting); // 안녕하세요

// String(byte[] bytes): 바이트 배열을 문자열로 변환 (기본 플랫폼 인코딩 사용)
byte[] bytes = {72, 101, 108, 108, 111};
String hello = new String(bytes);
System.out.println(hello); // Hello

// String(byte[] bytes, Charset charset): 특정 문자 인코딩으로 바이트 배열 해석
byte[] bytes = "안녕".getBytes(StandardCharsets.UTF_8);
String str = new String(bytes, StandardCharsets.UTF_8);
System.out.println(str); // 안녕

(2) String 클래스의 메서드

리턴 타입 메서드 이름(매개 변수) 설명
char charAt(int index) 특정 위치(index)의 문자열 리턴
boolean equals(Object anObject) 두 문자열 비교
byte[] getBytes() byte[]로 리턴
getBytes(Charset charset) 주어진 문자열을 인코딩한 byte[]로 리턴
int indexOf(String str) 문자열 내에서 주어진 문자열의 위치 리턴
length() 총 문자의 수를 리턴
String replace(CharSequence target, CharSequence replacement) target 부분을 replacement로 교체한
새로운 문자열 리턴
substring(int beginIndex) beginIndex 위치에서 끝까지 잘라낸 새로운 문자열 리턴
substring(int beginIndex, int endIndex) beginIndex 위치에서 endIndex 전까지 잘라낸
새로운 문자열 리턴
toLowerCase() 알파벳을 모두 소문자로 변환한 새로운 문자열 리턴
toUpperCase() 알파벳을 모두 대문자로 변환한 새로운 문자열 리턴
trim() 앞뒤 공백을 제거한 새로운 문자열 리턴
valeOf(int i)
valueOf(double d)
기본 타입 값을 문자열로 리턴

5) Wrapper(포장) 클래스

  • 기본 타입(이전 글 참고: 2025.05.19 - [자바(JAVA)/미니 프로젝트 & 기초 공부] - Java 기초 또 다시 공부하기 2일차 - 변수, 기본 타입)의 값을 갖는 객체
  • 기본 타입의 값을 내부에 두고 포장하며, 이 기본 타입 값은 외부에서 변경할 수 없음
  • 기본 타입 이름에 대응되는 이름들을 가진 클래스가 모두 있음(단 char은 Character 클래스, int는 Integer 클래스)
  • 기본 타입의 값을 포장 객체로 만드는 과정을 박싱(boxing),
    포장 객체에서 기본 타입의 값을 얻어내는 과정을(unboxing)이라고 함
    -> 포장 클래스 타입에 기본값을 대입하면 자동 박싱, 포장 객체를 기본 타입에 대입하면 자동 언박싱 발생
  • 포장 값을 비교하려면 언박싱한 값을 얻어, ==와 != 연산자로 비교해야 함
// 기본형: Wrapper 객체로 변환 (Boxing)
int num = 10;
Integer boxedNum = Integer.valueOf(num); // 또는 자동박싱: Integer boxedNum = num;

// Wrapper 객체: 기본형으로 변환 (Unboxing)
Integer boxed = Integer.valueOf(20);
int unboxed = boxed.intValue(); // 또는 자동언박싱: int unboxed = boxed;

 

* 자주 쓰는 Wrapper 클래스들

기본형 Wrapper 클래스
int  Integer
double Double
char Character
boolean Boolean

6) Math 클래스

  • 수학 계산에 사용할 수 있는 메서드
  • 모두 정적(static) 메서드이므로 Math 클래스로 바로 사용 가능
분류  메서드 이름  설명  예시
절댓값  abs(x) 절댓값 반환 Math.abs(-5) → 5
최대/최소 max(x, y), min(x, y) 두 값 중 큰 값 / 작은 값 반환 Math.max(3, 7) → 7
거듭제곱 pow(a, b) a^b 계산 Math.pow(2, 3) → 8.0
제곱근 sqrt(x)  제곱근 반환 Math.sqrt(9) → 3.0
반올림 round(x) 소수점 첫째 자리에서 반올림 (정수 반환) Math.round(2.7) → 3
올림/내림 ceil(x), floor(x) 올림 / 내림 값 반환 Math.ceil(2.3) → 3.0
삼각함수 sin(x), cos(x), tan(x) 사인, 코사인, 탄젠트 (라디안 기준)  Math.sin(Math.PI/2) → 1.0
로그/지수 log(x), log10(x), exp(x) 자연로그, 상용로그, 지수 함수 계산 Math.log(Math.E) → 1.0
난수 생성 random() 0.0 이상 1.0 미만의 난수 반환 Math.random() → 예: 0.582
부호 signum(x)  값의 부호 반환 (-1.0, 0.0, 1.0) Math.signum(-3.5) → -1.0
반응형