[Java] java.lang

허경두·2025년 4월 3일

Java

목록 보기
8/12

java.lang 패키지에 포함되어 있으면 별도의 import 없이 사용 가능하다

Object 클래스

Object 클래스의 메서드

메서드설명
protected Object clone()해당 객체의 복사본을 반환 (깊은 복사는 아님)
boolean equals(Object obj)두 객체가 같은지 비교
protected void finalize()객체가 가비지 컬렉션될 때 호출 (더 이상 사용되지 않음)
Class<?> getClass()런타임 시 해당 객체의 클래스 정보를 반환
int hashCode()객체의 해시코드 값을 반환
void notify()현재 객체의 모니터에서 기다리는 하나의 스레드를 깨움
void notifyAll()현재 객체의 모니터에서 기다리는 모든 스레드를 깨움
String toString()객체의 문자열 표현을 반환
void wait()현재 스레드를 대기 상태로 만듦 (다른 스레드에서 notify() 호출 시까지)
void wait(long timeout)지정된 시간 동안 대기 후 자동으로 깨어남
void wait(long timeout, int nanos)지정된 시간(나노초 단위) 동안 대기 후 자동으로 깨어남

Class 클래스

Class 클래스 : Java에서 Class 클래스는 클래스의 메타데이터(클래스 정보)를 표현하는 클래스. 즉, JVM이 클래스에 대한 정보를 저장하고 관리하기 위해 사용하는 클래스이며, 리플렉션(Reflection) API의 핵심이 된다

클래스 로더에 의해 클래스 파일이 메모리에 올라갈 때 자동으로 생성된다

  • 특징
    • 모든 클래스는 실행 시 Class 객체로 표현됨
    • 리플렉션(Reflection)을 통해 클래스의 필드, 메서드, 생성자 등을 동적으로 가져올 수 있음
    • 클래스의 인스턴스를 생성하지 않고도 Class 객체를 통해 메서드 호출 가능

클래스 객체를 얻는 법

Class obj = new Test().getClass();
Class obj = Test.class;
Class obj = Class.forName("Test");

String 클래스

문자열을 char 배열로 저장하며 관련된 메서드를 제공하는 클래스

public final class String implements java.io.Serializable, Comparable {...}

  • 특징

    • String 클래스는 불변(Immutable) 객체로, 한 번 생성되면 변경 불가능
      → 수정하면 새로운 객체가 생성됨
    • 문자열 리터럴 풀을 사용하여 메모리를 절약
      → 생성자를 사용해서 초기화 하면 리터럴 풀을 사용하지 않으므로 비추천
    • 문자열 비교 시 ==이 아닌 equals() 사용
    • 문자열을 자주 변경할 경우 StringBuilder/StringBuffer를 사용하는 것이 효율적
    • 다양한 문자열 조작 메서드를 제공 (substring(), replace(), split(), trim() 등)
  • 주요 메서드

    메서드설명
    int length()문자열의 길이를 반환
    char charAt(int index)지정된 위치의 문자 반환
    int indexOf(String str)특정 문자열이 처음 등장하는 위치 반환 (없으면 -1)
    int lastIndexOf(String str)특정 문자열이 마지막으로 등장하는 위치 반환
    boolean contains(CharSequence s)문자열이 특정 문자열을 포함하는지 여부 반환
    boolean startsWith(String prefix)특정 접두사로 시작하는지 확인
    boolean endsWith(String suffix)특정 접미사로 끝나는지 확인
    boolean equals(Object obj)문자열의 내용이 같은지 비교
    boolean equalsIgnoreCase(String anotherString)대소문자 구분 없이 문자열 비교
    String substring(int beginIndex)지정된 위치부터 끝까지 문자열 추출
    String substring(int beginIndex, int endIndex)지정된 범위의 문자열 추출
    String toUpperCase()문자열을 대문자로 변환
    String toLowerCase()문자열을 소문자로 변환
    String trim()문자열 앞뒤 공백 제거
    String replace(CharSequence target, CharSequence replacement)특정 문자열을 다른 문자열로 변경
    String[] split(String regex)특정 구분자로 문자열을 나눠 배열로 반환
    String concat(String str)문자열을 이어 붙임 (+ 연산자와 동일)
    boolean isEmpty()문자열이 비어 있는지 ("") 확인
    String join(CharSequence delimiter, CharSequence... elements)여러 문자열을 특정 구분자로 연결. java.util.StringJoiner 로도 결합할 수 있음
    byte[] getBytes()문자열을 바이트 배열로 변환
    char[] toCharArray()문자열을 문자 배열로 변환
    String format(String format, Object... args)지정된 형식(format)에 맞춰 문자열 반환 (ex: String.format("Name: %s, Age: %d", "Alice", 25))
    String valueOf(primitive_type v)기본형(primitive) 또는 객체를 문자열로 변환 (ex: String.valueOf(123) → "123")

StringBuffer, StringBuilder 클래스

  • 공통점

    • String과 달리 가변(Mutable) 객체로, 문자열을 수정할 수 있음
    • 버퍼(buffer)를 사용하여 문자열을 관리하며, 문자열이 변경될 때 새로운 객체를 생성하지 않음
    • 주요 메서드(append(), insert(), delete(), reverse() 등)가 동일
  • 차이점

    특징StringBufferStringBuilder
    동기화 (Thread-Safety)✅ 멀티스레드 환경에서 안전❌ 동기화 지원 X (싱글 스레드에서 빠름)
    성능동기화로 인해 StringBuilder보다 느림동기화가 없어 더 빠름
    사용 목적멀티스레드 환경에서 사용성능이 중요한 싱글스레드 환경에서 사용
  • 주요 메서드(동일)

    메서드설명
    append(String s)문자열을 끝에 추가
    insert(int offset, String s)특정 위치에 문자열 삽입
    replace(int start, int end, String s)지정된 범위의 문자열을 다른 문자열로 변경
    delete(int start, int end)지정된 범위의 문자열 삭제
    deleteCharAt(int index)특정 인덱스의 문자 삭제
    reverse()문자열을 뒤집음
    setCharAt(int index, char ch)특정 인덱스의 문자를 변경
    capacity()현재 버퍼의 크기 반환
    ensureCapacity(int minimumCapacity)최소한의 버퍼 크기 보장
    charAt(int index)지정된 인덱스의 문자 반환
    substring(int start, int end)지정된 범위의 문자열 반환 (새로운 String 객체 생성)
    length()문자열 길이 반환
    setLength(int newLength)문자열 길이를 변경 (길이를 줄이면 삭제 효과, 늘리면 공백 추가)
    toString()StringBuffer 또는 StringBuilder 객체를 String으로 변환

Math 클래스

기본적인 수학계산에 유용한 메서드로 구성

  • 특징
    • 모든 메서드가 static이므로 인스턴스 생성 없이 사용 가능
    • 수학적 연산을 위한 다양한 메서드 제공 (절댓값, 제곱, 반올림, 삼각함수, 난수 생성 등)
    • 상수 값 제공
      • Math.PI → 원주율(3.141592...)
      • Math.E → 자연로그의 밑수(2.718281...)
  • 주요 메서드
    메서드설명
    abs(int a)절댓값 반환 (Math.abs(-10) → 10)
    max(int a, int b)두 값 중 더 큰 값 반환 (Math.max(5, 10) → 10)
    min(int a, int b)두 값 중 더 작은 값 반환 (Math.min(5, 10) → 5)
    pow(double a, double b)a의 b제곱 반환 (Math.pow(2, 3) → 8.0)
    sqrt(double a)제곱근 반환 (Math.sqrt(16) → 4.0)
    cbrt(double a)세제곱근 반환 (Math.cbrt(27) → 3.0)
    round(float a)반올림하여 가장 가까운 정수 반환 (Math.round(4.6) → 5)
    floor(double a)내림(버림) 연산 (Math.floor(4.9) → 4.0)
    ceil(double a)올림 연산 (Math.ceil(4.1) → 5.0)
    random()0.0 이상 1.0 미만의 난수 생성 (Math.random() → 0.12345...)
    sin(double a)사인값 반환 (Math.sin(Math.PI/2) → 1.0)
    cos(double a)코사인값 반환 (Math.cos(0) → 1.0)
    tan(double a)탄젠트값 반환 (Math.tan(Math.PI/4) → 1.0)
    log(double a)자연로그(ln) 반환 (Math.log(Math.E) → 1.0)
    log10(double a)상용로그(log10) 반환 (Math.log10(100) → 2.0)
    exp(double a)e의 a제곱 반환 (Math.exp(2) → 7.389...)
    signum(double a)양수면 1, 0이면 0, 음수면 -1 반환 (Math.signum(-10) → -1.0)
    toDegrees(double rad)라디안을 각도로 변환 (Math.toDegrees(Math.PI) → 180.0)
    toRadians(double deg)각도를 라디안으로 변환 (Math.toRadians(180) → 3.141592...)

래퍼 클래스

기본형(Primitive Type)을 객체(Object)로 다룰 수 있도록 감싸는 클래스

  • 특징

    • 기본형과 객체 간 변환을 위한 오토박싱(AutoBoxing) & 언박싱(UnBoxing) 지원
    • 불변(Immutable): 한 번 생성된 객체는 변경할 수 없음
    • char를 제외한 모든 래퍼클래스에는 String을 매개변수로 하는 생성자가 존재 한다
      Integer(int value) Integer(String s)
  • 상속 계층도

    • Object
      • Number
        • Byte
        • Short
        • Integer
        • Long
        • Float
        • Double
        • BigInteger
        • BigDecimal
      • Character
      • Boolean
  • 종류

    기본형래퍼 클래스
    booleanBoolean
    byteByte
    charCharacter
    shortShort
    intInteger
    longLong
    floatFloat
    doubleDouble
  • 주요 메서드

    메서드설명
    valueOf(String s)문자열을 해당 타입의 객체로 변환 (Integer.valueOf("123") → 123)
    parseXxx(String s)문자열을 기본형으로 변환 (Integer.parseInt("123") → 123)
    xxxValue()객체를 기본형으로 변환 (intValue(), doubleValue() 등)
    toString()값을 문자열로 변환 (Integer.toString(123) → "123")
    compareTo(T obj)두 객체 비교 (a.compareTo(b) → a > b이면 1, a < b이면 -1, 같으면 0)
    equals(Object obj)값이 같은지 비교 (Integer.valueOf(100).equals(100) → true)
    MAX_VALUE / MIN_VALUE해당 타입의 최대/최소값 (Integer.MAX_VALUE → 2147483647)

오토박싱과 언박싱

기본형(Primitive Type)과 래퍼 클래스(Wrapper Class) 간의 변환을 자동으로 수행하는 기능

오토박싱(autoboxing) : 기본형 → 래퍼 클래스
언박싱(unboxing) : 래퍼 클래스 → 기본형

예시

public class AutoBoxingUnBoxing {
    public static void main(String[] args) {
        // 오토박싱 (기본형 → 객체)
        Integer intObj = 100;
        Double doubleObj = 10.5;

        // 언박싱 (객체 → 기본형)
        int intVal = intObj;
        double doubleVal = doubleObj;

        // 자동 변환 확인
        System.out.println("Integer 객체: " + intObj);  // 100
        System.out.println("Double 객체: " + doubleObj); // 10.5
        System.out.println("int 값: " + intVal);  // 100
        System.out.println("double 값: " + doubleVal); // 10.5
    }
}

java.util의 유용한 클래스

java.util.Objects

메서드설명
isNull(Object obj)객체가 null인지 확인
nonNull(Object obj)객체가 null이 아닌지 확인
requireNonNull(T obj)객체가 null이면 예외 발생
equals(Object a, Object b)두 객체가 같은지 비교 (null 안전)
hash(Object... values)여러 값을 기반으로 해시코드 생성
toString(Object obj)객체를 문자열로 변환 (null이면 "null" 반환)

java.util.Random

메서드설명
nextInt()임의의 정수 반환
nextInt(int bound)0 ~ bound-1 범위의 정수 반환
nextDouble()0.0 ~ 1.0 사이의 실수 반환
nextBoolean()랜덤한 true / false 반환
nextGaussian()정규분포를 따르는 난수 반환

java.util.regex 패키지 (Pattern, Matcher)

클래스/메서드설명
Pattern.compile(String regex)정규식 패턴 생성
matcher(CharSequence input)입력 문자열과 패턴 매칭
find()패턴과 일치하는 부분 검색
group()매칭된 문자열 반환
replaceAll(String replacement)정규식과 일치하는 부분을 대체

java.util.Scanner

메서드설명
nextInt()정수 입력 받기
nextDouble()실수 입력 받기
nextLine()한 줄 입력 받기
hasNext()입력 값이 남아있는지 확인
useDelimiter(String pattern)입력 구분자 설정

java.util.StringTokenizer

메서드설명
StringTokenizer(String str, String delim)문자열을 특정 구분자로 분할
hasMoreTokens()다음 토큰이 있는지 확인
nextToken()다음 토큰 반환
countTokens()남은 토큰 개수 반환

java.math의 유용한 클래스

java.math.BigInteger

메서드설명
add(BigInteger val)덧셈
subtract(BigInteger val)뺄셈
multiply(BigInteger val)곱셈
divide(BigInteger val)나눗셈
mod(BigInteger val)나머지 연산
pow(int exponent)거듭제곱

java.math.BigDecimal

메서드설명
add(BigDecimal val)덧셈
subtract(BigDecimal val)뺄셈
multiply(BigDecimal val)곱셈
divide(BigDecimal val, RoundingMode mode)나눗셈 (반올림 모드 설정)
compareTo(BigDecimal val)두 값 비교
setScale(int newScale, RoundingMode mode)소수점 자리수 설정

0개의 댓글