자바기본 API
API
API란 자바 시스템을 제어하기 위해서 자바에서 제공하는 명령어들을 의미한다
Java SE(JDK)를 설치하면 자바 시스템을 제어하기 위한 API를 제공한다
API의 목록과 사용법은 API Documentation 이곳에서 확인 가능하다
-
기본 패키지 종류
java.lang
: 자바 프로그래밍을 위한 가장 기본적인 패키지와 클래스를 포함하고 있다java.util
: 프로그램을 제어하기 위한 클래스와 데이터를 효율적으로 저장하기 위한 클래스들을 담고 있다java.io
: 키보드, 모니터, 프린터, 파일등을 제어할 수 있는 클래스들의 모음java.net
: 통신을 위한 기능들을 담고 있다
java.lang 패키지
가장 기본적인 클래스들이 포함된 패키지로 별도의 import 없이 사용 가능하다
우리가 많이 사용하는 System.out.println()의 System
클래스도 바로 이 패키지의 소속이다
[ Object 클래스 ]
자바의 모든 클래스가 직간접적으로 상속받는 최상위 클래스로 자바 모든 클래스들의 기본 특징을 결정한다
메소드 | 설명 |
---|---|
protected Object clone() throws CloneNotSupportedException() |
객체를 복사하여 반환 반드시 예외처리를 해주어야 하며 얕은 복사를 한다 |
public boolean equals(Object obj) |
객체가 동일한지 확인하여 결과 반환 |
protected void finalize() throws Throwable |
가비지 컬렉션이 수행될 때 자동으로 호출 |
public final Class getClass() |
객체의 실행 클래스를 반환 |
public int hashCode() |
객체의 해시코드 값 반환 |
public String toString() |
객체의 정보를 원하는 형태로 반환시키고자 할 때 사용한다 |
String toString(Object o) | 객체의 toString()값 리턴 |
int compare(T a, Tb, Comparator |
두 객체 a와 b를 Comparator를 사용해 비교 |
int hashCode(Object o) | 객체의 해시코드 생성 |
Boolean isNull(Ojbect obj) | 널인지 확인 |
Boolean nonNull(Ojbect obj) | 널이 아닌지 확인 |
[ String 관련 클래스 ]
-
String 클래스
- 문자열을 사용하는데 가장 많이 사용하는 클래스이다
- immutable(불변성)을 가지며 한번 선언된 문자열 값 수정이 불가능하다
=> 문자열 내용을 변경할 경우 기존 객체의 값이 변하는 것이 아니라 새로운 String 객체를 만들어 그 주소값을 저장시킨다(immutable)
메소드 설명 charAt(index) index 위치에 있는 문자 반환 compareTo(str) str보다 사전 순으로 앞이면 음수, 같으면 0, 뒤면 정수 값을 반환 concat(str) 기존 문자열에 str을 이어 새로운 String을 반환(immutable적으로 new String()을 생성하여 반환) equals(str) str과 같은 문자열이면(대소문자 구분) True, 그렇지 않으면 False 반환 equalsIgnoreCase(str) equals()와 동일하게 동작하나 대소문자를 무시히여 판단한다 length() 문자 길이를 반환 replace(char oldChar, char newChar) 문자열의 oldChar를 모두 newChar로 변경 substring(int offset, int endIndex) offset 위치에서부터 endIndex-1까지에 걸친 문자열을 반환 toLowerCase() 모든 대문자를 소문자로 변환 toUpperCase() 모든 소문자를 대문자로 변환 split(str) str을 구분자로 사용하여 문자열을 나누고 나눠진 문자열을 String[]에 담아 반환한다 trim() 문자열의 앞, 뒤 공백을 제거한 문자열을 리턴한다(문자열 중간의 공백은 제거하지 않는다) toCharArray() 문자열의 각 문자들을 char[] 에 담아 반환 String.valueOf() 다른 자료형을 String 으로 형변환 후 반환
-
StringBuffer 클래스
- mutable(가변성)을 가지며 객체가 가진 문자열 값 자체를 수정 가능하다
=> 새로운 String객체를 생성하는 것이 아니라 버퍼에 담겨있는 문자열을 바로 수정하기 때문 - 문자열 연산이 빈번하게 일어나는 알고리즘에서 발생하는 메모리 이슈를 해결하기 위해 나온 클래스이다
- 객체 생성시 크기를 지정하지 않으면 기본적으로 16개 문자 크기로 지정된 버퍼를 가지며 크기 증가도 가능하다
- Thread safe(동기화) 기능을 제공한다(성능저하 요인)
- 멀티 스레드 환경에서 유용하다
- append(“문자열”) : 문자열에 문자열을 합친다
- lastIndexOf(“문자열”) : 해당 문자열의 마지막 위치를 반환한다
- deleteCharAt(index) : 인덱스에 해당하는 위치의 문자 하나를 없앤다
- delete(index, index) : 시작인덱스 <= 삭제 범위 < 종료인덱스 만큼의 문자를 삭제시킨다
- mutable(가변성)을 가지며 객체가 가진 문자열 값 자체를 수정 가능하다
-
StringBuilder 클래스
- StringBuffer와 메소드 등 동작이 동일하나 Thread safe(동기화) 기능을 제공하지 않는다
- 단일 스레드 환경에서 유용하다
-
StringTokenizer 클래스
- String클래스에서 제공하는 split()메소드와 같은 기능을 하는 클래스이다
- 생성 시 전달받은 문자열을 구분자로 나누어 각 토큰에 저장시킨다
- hasMoreTokens() : 다음 토큰이 있으면 true 없으면 false 반환
- countTokens() : 분리된 문자열의 개수를 반환
- nextToken() : 다음 토큰에 담긴 문자열을 반환
[ Math 클래스 ]
숫자 계산에 흔히 사용되는 수학적 기능을 가지는 메소드를 제공하는 클래스
모든 메소드들이 정적 메소드로 정의되어 있어, 객체를 생성하지 않고 사용한다 (ex. Math.메소드()
)
Math 클래스의 생성자는 private이다
메소드 | 설명 |
---|---|
static int abs(int num) | 절대 값을 반환 |
static double ceil(double num) | 올림 값(ceiling)을 반환 |
static double floor(double num) | 내림 값을 반환 |
static double random() | 0.0(포함)과 1.0(미포함) 사이의 난수를 반환 |
static double sqrt(double num) | 양수만 가능한 num의 제곱근을 반환 |
static double exp(double power) | 지정된 power만큼 e의 제곱 된 값을 반환 |
static double pow(double num, double power) | num을 power 만큼 제곱한 값을 반환 |
static double acos(double num) | arc cosine을 반환 |
static double asin(double num) | arc sine을 반환 |
static double atan(double num) | arc tangent를 반환 |
static double cos(double num) | cosine을 반환 |
static double sin(double num) | sine을 반환 |
static double tan(double tan) | tangent를 반환 |
[ Wrapper 클래스 ]
자바의 기본형 자료형을 클래스화(객체화) 하기 위해 사용하는 클래스
기본 자료형들 클래스화 하면 Object의 자식 클래스가 되며 데이터 타입에 상관없이 Object 클래스를 이용한 처리가 가능해진다
기본형 데이터타입 | Wrapper 클래스 |
---|---|
boolean | Boolean |
byte | Byte |
char | Character |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
byte b = Byte.parseByte("1");
String b = Byte.valueOf((byte)1).toString();
short s = Short.parseShort("2");
String s = Short.valueOf((short)2).toString();
int i = Integer.parseInt("3");
String i = Integer.valueOf(3).toString();
long l = Long.parseLong("4");
String l = Long.valueOf(4L).toString();
float f = Float.parseFloat("0.1");
String f = Float.valueOf(0.1f).toString();
double d = Double.parseDouble("0.2");
String d = Double.valueOf(0.2).toString();
boolean bool = Boolean.parseBoolean("true");
String bool = Boolean.valueOf(true).toString();
char c = "abc".charAt(0);
String ch = Character.valueOf('a').toString();
-
박싱(Boxing)
- 기본형 데이터타입을 객체화 시키는 작업을 말한다
Integer value = new Integer(123);
와 같은 식으로도 사용 가능하다
-
언박싱(Unboxing)
- 객체에 저장되어있는 데이터를 기본형 데이터로 꺼내는 작업을 말한다
int i = value.intValue();
와 같은 식으로도 사용 가능하다
-
자동 박싱(Auto Boxing), 자동 언박싱(Auto Unboxing)
- 자바 JDK1.5 이상부터는 기본 타입과 Wrapper클래스 타입 간의 변환이 자동으로 이루어진다
int i = 10; Integer iValue = i; Double dValue = new Double(3.14); double d = dValue;
[ Random 클래스 ]
Random클래스는 객체를 생성해야하는 불편함이 있지만 int, long float, double, boolean형의 난수를 발생시킬 수 있다
비슷한 역할을 하는 Math.random()은 정적 메소드로 객체를 생성하지 않고 편하게 사용 가능하지만 double 형태의 난수만 발생 가능하다
메소드 | 설명 |
---|---|
int nextInt() | int 형 범위 안의 난수 발생 |
int nextInt(int n) | 0부터 정수 n까지의 난수 발생 |
boolean nextBoolean() | 무작위로 true 또는 false 반환 |
float nextFloat() | float 범위의 난수 발생 |
double nextDouble() | double 범위의 난수 발생 |
[ 날짜 관련 클래스 ]
-
Calendar 클래스
- 생성자가 protected이기 때문에 new연산자를 통해 객체 생성 불가능
- getInstance() 메소드를 통해서 객체 생성
-
GregorianCalendar 클래스
- Calendar클래스의 후손 클래스
- 년, 월, 일, 시, 분, 초 정보를 필드를 이용하여 다룰 수 있다
Calendar today = Calendar.getInstance();
// 생성자가 protected이므로 new 사용 불가
GregorianCalendar today = new GregorianCalendar();
// Calendar클래스의 후손(파생)클래스
// 년, 월, 일, 시, 분, 초 정보를 필드(멤버변수)를 이용하여 각각 다룰 수 있음
int year = today.get(Calendar.YEAR);
int month = today.get(Calendar.MONTH) + 1;
int date = today.get(Calendar.DATE);
int ampm = today.get(Calendar.AM_PM);
int hour = today.get(Calendar.HOUR);
int min = today.get(Calendar.MINUTE);
int sec = today.get(Calendar.SECOND);
String sAmPm = (ampm == Calendar.AM) ? "오전" : "오후";
System.out.printf("%d년 %d월 %d일 %s %d시 %d분 %d초", year, month, date, sAmPm, hour, min, sec);
-
Date 클래스
- 시스템으로부터 현재 날짜, 시간 정보를 가져와서 다룰 수 있는 클래스
- 자바 개발 초창기에 급하게 만들어져 완성도가 높지 않은 클래스이다
- 생성자 2개만 사용가능하고 나머지는 모두 deprecated 되었다
- Calendar 클래스, GreforianCalendar 클래스 사용을 권장한다
Date today = new Date(); // 시스템으로부터 현재 날짜, 시간 정보를 가져와 기본 값으로사용 Date when = new Date(123456798L); // long형 정수 값을 가지고 날짜 시간 계산 // 1970년 1월 1일 0시 0분 0초를 기준으로 함
-
SimpleDateFormat 클래스 (Format 관련 클래스임)
- Date의 날짜, 시간 정보를 원하는 format으로 출력하는 기능을 제공한다
- java.text 패키지에 속해있다
Date today = new Date(); SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd hh-mm-ss"); String ftToday = ft.format(today); //today에 포맷을 적용한 결과를 문자열로 리턴
댓글남기기