Java API (1) - java.lang 패키지

2025. 2. 24. 14:31Java/Java 문법

java.lang

  • 자바 프로그래밍을 위한 가장 기본적인 패키지와 클래스를 포함하고 있다.
  • java.lang 패키지의 클래스들은 import문 없이도 사용 가능하다
  • java.lang 하위 클래스
클래스 용도 
Object 자바 클래스의 최상위 클래스로 사용
System 표준 입력 장치로부터 데이터를 입력받을때 사용 - 표준 출력 장치로 출력하기 위해 사용
java.lang.System.out.println("Hello");
Class 클래스를 메모리로 로딩할때 사용
String 문자열을 저장하고 여러 가지 정보를 얻을 때 사용
StringBuffer, StringBuilder 문자열을 저장하고 내부 문자열을 조작할 때 사용
Wrapper 기본 타입의 데이터를 갖는 객체를 만들때 사용
Math 수학 함수를 이용할 때 사용

 

1. java.lang.Object

https://dev-rosiepoise.tistory.com/111
  • 자바 내 모든 클래스의 최고 조상, 최상위 부모 클래스
  • Object 클래스는 멤버변수는 없고 11개의 메소드만 있다.
  • Object 클래스의 멤버들은 모든 클래스에서 바로 사용 가능
  • Object 클래스가 가지는 메소드를 오버라이딩 해서 사용하는 것도 가능하다.
  • Object 주요 메소드
메소드 용도
boolean equals(Object obj) 객체 자신과 객체 obj가 같은 객체인지 판단
동일 객체(주소 동일) 비교 메소드를 
동등 객체(객체 값 동일) 비교 메소드로 재정의해서 사용 가능 
int hashCode() 객체 자신의 해시코드를 반환
equals() 메소드를 재정의 하는 경우 반드시 hashCode() 메소드도 재정의 하도록 되어 있다.
pulic String toString() 객체 자신의 정보를 문자열로 반환
Object clone() 객체 자신의 복사본 반환

 

2. java.lang.String

2-1. String 클래스 

  • 자바에서 String 클래스는 문자열을 나타내는 자료형이다.
  • String 클래스에는 문자열 관련된 작업을 할 때 유용하게 사용할 수 있는 다양한 메소드가 포함되어 있다.
  • String 인스턴스는 불변 객체
    • 불변 객체(immutable object) : 한 번 생성되면 그 값을 읽기만 가능하고 변경할 수는 없다.
    • 자바에서 덧셈(+) 연산자를 이용하여 문자열 결합을 하는 경우 기존 문자열이 변경되는 것이 아닌 문자열이 합쳐진 새로운 String 인스턴스가 생성된다.

2-2. String의 두 가지 생성 방법

//1. 리터럴을 이용한 방식 
//string constant pool이라는 영역에 존재하게 됨 
String s1 = "Cat";
String s2 = "Dog"; 

//2. new 연산자를 이용한 방식
//Heap 영역에 존재하게 됨
String s3 = new String("Cat");

2-3. String의 주요 메소드

메소드 설명
equals() String의 equals()는 참조변수 주소가 아닌 객체의 값을 비교하도록 재정의 되어있다. 
hashCode() String의 hashCode()는 문자열 값이 같은 문자열은 같은 해시코드를 반환하도록 재정의 되어있다. 
charAt() 해당 문자열의 특정 인덱스에 해당하는 문자를 반환한다.
인덱스는 0부터 시작하는 숫자 체계를 의미하며 인덱스를 벗어난 정수를 인자로 전달하는 경우에는 IndexOutOfBoundsException이 발생한다.
compareTo() 인자로 전달된 문자열과 사전 순으로 비교를 하여
두 문자열이 같다면 0 을 반환, 인자로 전달된 문자열보다 작으면 음수를, 크면 양수를 반환. 
단, 이 메소드는 대소문자를 구분하여 비교한다.
compareToIgnoreCase() 대소문자를 구분하지 않고 비교한다
concat() 문자열에 인자로 전달된 문자열을 합치기해서 새로운 문자열을 반환한다. 
원본 문자열에는 영향을 주지 않는다.
indexOf() 문자열에서 특정 문자를 탐색하여 처음 일치하는 인덱스 위치를 정수형으로 반환한다.
단, 일치하는 문자가 없는 경우 -1을 반환한다.
lastIndexOf() 문자열 탐색을 뒤에서부터 하고 처음 일치하는 위치의 인덱스를 반환한다.
단, 일치하는 문자가 없는 경우 -1을 반환한다.
trim() 문자열의 앞 뒤에 공백을 제거한 문자열을 반환한다.
toLowerCase() 모든 문자를 소문자로 변환시킨다. 원본에는 영향을 주지 않는다.
toUpperCase() 모든 문자를 대문자로 변환시킨다. 원본에는 영향을 주지 않는다.
substring() 문자열의 일부분을 잘라내어 새로운 문자열을 반환한다. 원본에 영향을 주지 않는다.
replace() 문자열에서 대체할 문자열로 기존 문자열을 변경해서 반환한다. 원본에 영향을 주지 않는다.
length() 문자열의 길이를 정수형으로 반환한다.
isEmpty() 문자열의 길이가 0이면 true를 반환, 아니면 false를 반환한다. 길이가 0인 문자열은 null과는 다르다.
split() 정규표현식을 이용하여 문자열을 분리한다. 

 

문자열 분리 관련 참고 포스팅 

 

String 문자열 분리 문법 - split(), StringBuffer

 

hnjee.tistory.com

 

3. java.lang.StringBuffer

  • String, StringBuffer, StringBuilder : 문자열 처리 클래스 
  • String은 불변하기 때문에 값을 변경할 수가 없음 -> 이를 해결하기 위해서 StringBuffer와 StringBuilder가 등장
  • StringBuffer와 StringBuilder의 차이점: Thread safe, 속도 
  • String, StringBuilder 관련 참고 포스팅  
 

Character, String, StringBuilder 정리

Character, String, StringBuilder 모두 java.lang 패키지에 포함된 클래스.자바의 기본적인 데이터 처리와 관련되어 있다.자주 사용되는 클래스라 별도의 임포트 없이 바로 사용할 수 있다. 1. Character 클래

hnjee.tistory.com

 

4. java.lang.Wrapper

4-1. Wrapper 클래스

  • Wrapper 클래스: 기본형 데이터를 객체로 다루기 위해서 사용하는 클래스이다.
  • Wrapper 객체는 기본형 데이터를 내부에 저장한다.
  • Wrapper 객체 안에 있는 기본형 데이터는 외부에서 변경할 수 없다.
  • 필요한 이유
    • 컬렉션(List, Set, Map 등) 사용: ArrayList<Integer> 같은 컬렉션 클래스는 객체만 저장할 수 있어서, int 같은 기본 타입을 객체로 감싸야 한다. 
    • 객체 지향적인 프로그래밍: 기본 타입은 객체가 아니라서 OOP 개념을 적용하기 어렵지만, Wrapper Class를 사용하면 메서드를 활용할 수 있다.
    • 유틸리티 메서드 활용: Integer.parseInt("123") 같은 유용한 메서드를 제공한다. 

4-2. Wrapper 클래스의 종류

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

4-3. Boxing, UnBoxing 개념

  • Boxing: 기본형 데이터를 Wrapper 객체로 만드는 과정
  • Unboxing: Wrapper 객체에서 기본형 데이터를 얻어내는 과정
  • Auto-Boxing & Auto-Unboxing: 자바 5부터는 기본 타입과 래퍼 클래스 간의 변환을 자동으로 해준다. 
int num = 128;
//Wrapper 클래스의 생성자는 1.9 버전부터 deprecated 되었다.
// Integer num1 = new Integer(num);
        
//1. Boxing : int -> Integer
Integer num1 = Integer.valueOf(num);
Integer num2 = num; //Auto Boxing

//2. UnBoxint : Integer -> int
int num3 = num1.intValue();
int num4 = num1; //Auto Unboxing
  • == 연산자 사용시 Auto-Boxing 주의
//Integer의 -128 ~ 127 범위는 캐싱되지만
//그 이상은 다른 객체가 돼서 비교할 때 equals()를 써야 한다. 

Integer a = 127;
Integer b = 127;
System.out.println(a == b);  // true (값 캐싱됨, 값 비교)

Integer c = 128;
Integer d = 128;
System.out.println(c == d);  	  // false (새 객체 생성됨, 객체 주소 비교)
System.out.println(c.equals(d));  // true (새 객체 생성됨, 객체 주소 비교)

//자동 toString() 처리 
System.out.println(c); //128, toString()처리 -> 값을 프린트

 

4-4. 변환 메서드

  • parseXxx() → 문자열을 기본 타입으로 변환
  • valueOf() → 문자열을 래퍼 클래스 객체로 변환
  • toString() → 숫자를 문자열로 변환
  • xxxValue() → 래퍼 클래스 객체를 기본 타입으로 변환
래퍼 클래스 변환 메서드
Integer parseInt(String s)
Double parseDouble(String s)
Float parseFloat(String s)
Long parseLong(String s)
Short parseShort(String s)
Byte parseByte(String s)
Boolean parseBoolean(String s)
//parseXxx() 메서드는 기본 타입을 반환
int num = Integer.parseInt("123");  // 문자열 "123" → int 123
double d = Double.parseDouble("3.14");  // 문자열 "3.14" → double 3.14
boolean flag = Boolean.parseBoolean("true");  // 문자열 "true" → boolean true

//valueOf() 메서드는 래퍼 클래스 객체를 반환
Integer numObj = Integer.valueOf("123");  // "123" → Integer 객체
Double dObj = Double.valueOf("3.14");  // "3.14" → Double 객체

//숫자를 문자열로 변환할 때 사용
String str = Integer.toString(123);  // 123 → "123"

//래퍼 클래스 객체를 다시 기본 타입으로 변환할 때 사용
Integer numObj = 100;
int num = numObj.intValue();  // Integer → int
double d = numObj.doubleValue();  // Integer → double

 

 

5. java.lang.Math

5-1. Math 클래스의 특징

  • java.lang 패키지에 있어서 import 없이 바로 사용 가능
  • 모든 메서드가 static → 객체 생성 없이 Math.method() 형태로 호출 가능
  • 수학 관련 다양한 기능 제공 (절댓값, 반올림, 제곱, 삼각 함수 등)

5-2. 주요 메서드 정리

  • abs() → 절댓값
  • max(), min() → 최댓값, 최솟값
  • round(), ceil(), floor() → 반올림, 올림, 내림
  • pow(), sqrt() → 거듭제곱, 제곱근
  • sin(), cos(), tan() → 삼각 함수
  • random() → 난수 생성
 

자바 난수 발생

Math.random() Math.random(): 0~1 사이의 소수값 원하는 범위의 난수를 구하는 공식(int) (Math.random() * 구하려는 난수의 갯수) + 구하려는 난수의 최소값 public static void main(String[] args) { /* 0 ~ 9까지의 난수

hnjee.tistory.com

public class MathExample {
    public static void main(String[] args) {
        System.out.println("절댓값: " + Math.abs(-7));  
        System.out.println("최댓값: " + Math.max(3, 9));  
        System.out.println("제곱: " + Math.pow(2, 4));  
        System.out.println("난수: " + Math.random());  
    }
}