자바(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 리턴
(2) 객체 해시코드(hashCode())
- 객체 해시코드: 객체를 식별하는 하나의 정수값
-> 객체 메모리 번지를 이용하여 해시코드를 만들어 리턴하는 메서드(객체마다 다른 값을 가짐) - HashSet, HashMap, Hashtable 같은 해시 기반 컬렉션에서 객체를 저장하거나 비교할 때 사용
- equals()를 오버라이딩했다면 반드시 hashCode()도 함께 오버라이딩
-> 둘의 리턴값이 모두 같아야 같은 객체
(3) 객체 문자 정보(toString())
- 객체를 문자열로 표현한 결과(객체의 문자 정보)를 반환
2) System 클래스
- 운영체제의 일부 기능을 이용 가능한 클래스
-> 프로그램 종료, 키보드 입력, 모니터 출력, 현재 시간 읽기 - 모든 필드와 메서드는 '정적(static)'으로 구성되어 있음
(1) 프로그램 종료(exit())
- 강제적으로 JVM을 종료할 때 호출(현재 실행 프로세스를 강제 종료)
- exit() 안에 int 매개값(종료 상태값)을 지정하여 사용
-> 정상 종료일 경우 exit(0)과 같이 사용
(2) 현재 시각 읽기(currentTimeMillis(), nanoTime())
- 컴퓨터 시간으로부터 현재 시간을 읽어서, 밀리세컨드(1/1000초) 단위와 나노세컨드(1/10의 9승) 단위의 long값 리턴
-> 주로 프로그램 실행 소요 시간 측정에 사용
3) Class 클래스
- 자바는 클래스와 인터페이스의 메타 데이터를 이것으로 관리
-> 메타 데이터: 클래스 이름, 생성자 정보, 필드 정보, 메서드 정보
(1) Class 객체 얻기(getClass(), forName())
- 프로그램에서 Class 객체 정보를 얻는 방법
(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 |
반응형