Java API (1) - java.lang 패키지
2025. 2. 24. 14:31ㆍJava/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

- 자바 내 모든 클래스의 최고 조상, 최상위 부모 클래스
- 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());
}
}