[JAVA] java.lang 패키지
java.lang 패키지
- 자바 프로그래밍에 필요한 기본 클래스를 제공
- import문이 필요 없음
- Object, System. Math, String, StringBuffer, Thread, Exception, Throwable, Error 등
- Object 클래스
- 자동으로 모든 클래스의 조상이 되는 클래스
- 클래스 계층 구조에서 루트가 되는 클래스
- 모든 클래스는 자동으로 Object 클래스가 상속받음
- 자동으로 모든 클래스의 조상이 되는 클래스
-
Object의 주요 메소드
1) toString()
- 객체의 문자열 표현을 반환
- 클래스이름@16진수해시코드 로 표현
- 문자열의 +연산, System.out.print() 등에서 필요함
- 자식 클래스에서 재정의할 수 있음
2) boolean equals(Object obj)
- 두 객체 변수를 비교해서 두 변수의 참조값이 같을 때 true를 반환
- Object 클래스에서 equals()의 의미
- obj1.equals(obj2)의 결과는 obj1==obj2와 같음
- 자식 클래스에서 재정의할 수 있음
3) Object clone()
- 객체를 복제하여 리턴함
- ‘Cloneable 인터페이스를 구현한 클래스’의 객체만 clone() 메소드를 호출할 수 있음
- 예외(CloneNotSupportedException)처리를 해 주어야 함 - String 클래스
- 문자열을 표현하고 처리하기 위한 클래스
- 기본 자료형처럼 다룰 수 있음
- String 객체는 내용이 변하지않는(immutable) 상수 객체
- 생성자
- public String()
- public String(String original)
- public String(char[] value)
- public String(char[] value, int offset, int count)
- public String()
- 문자열을 표현하고 처리하기 위한 클래스
- String 메소드
- 비교 메소드
1) int compareTo(String anotherString)
- 같으면 0을 리턴하고 다르면 0이 아닌 정수값을 리턴
2) int compareTolgnoreCase(String anotherString)
3) boolean equals(Object anObject) - 문자열이 같으면 true를 리턴하고, 다르면 false를 리턴함
4) boolean equalsIgnoreCase(String anotherString)
- 같으면 0을 리턴하고 다르면 0이 아닌 정수값을 리턴
- 검색 메소드
1) int indexOf(String str), int indexOf(String str, intfromIndex)
- 처음 위치부터 문자열 str을 찾아 처음 등장하는 위치(인덱스)를 리턴함. 없으면 -1
2) int lastIndexOf(String str), int lastIndex(String str, int fromIndex) - 마지막 위치부터 앞 방향으로 찾음
- 처음 위치부터 문자열 str을 찾아 처음 등장하는 위치(인덱스)를 리턴함. 없으면 -1
- 추출 메소드
1) char charAt(int index)
- index 위치에 있는 문자를 리턴
2) String subString(int beginIndex) - beginIndex 위치부터 마지막까지의 문자열을 리턴
3) String substring(int beginIndex, int endIndex) - beginIndex 위치부터 (endIndex-1)까지의 문자열을 리턴함
- index 위치에 있는 문자를 리턴
- 변환 메소드
원본 문자열을 변경되지 않고 새로운 객체가 만들어짐
1) String replace(char oldChar, char newChar)
- oldChar 문자를 newChar 문자로 변환하여 리턴함
2) String trim() - 문자열 앞과 뒤에 나오는 화이트 스페이스 문자를 제거하여 리턴함
3) String toUpperCase()
4) String toLowerCase()
5) String concat(String str) - 두 문자열을 연결함
6) String.valueOf - 주어진 값을 String으로 형변환
- oldChar 문자를 newChar 문자로 변환하여 리턴함
- 기타 메소드
1) boolean startWith(String prefix)
- prefix로 시작하면 true를 리턴함
2) boolean endsWith(String suffix) - suffix로 끝나면 true를 리턴함
3) char[] toCharArray()
- prefix로 시작하면 true를 리턴함
- 비교 메소드
StringBuffer 클래스
- 객체 생성 이후 문자열을 수정할 수 있는 기능을 제공
- StringBuffer는 내용 변경이 가능한 mutable 클래스
- StringBuffer는 내용 변경이 가능한 mutable 클래스
- 내부적으로 문자열을 저장하기 위해 크기가 조절되는 버퍼를 사용함
- 생성자
- StringBuffer() : 초기 버퍼의 크기는 16
- StringBuffer(int length)
- StringBuffer(String str) : 초기 버퍼의 크기는 (str의 길이+16)
- StringBuffer() : 초기 버퍼의 크기는 16
-
주요 메소드
1) int capacity(), int length()
2) char charAt(int index), int indexOf(String str)
3) String substring(int start, int end)
4) StringBuffer append(char c)
- 인자를 String 표현으로 바꾸고 원 문자열 끝에 추가하여 반환함
- 인자는 char[], Object, String, 기본 자료형도 가능함
5) StringBuffer delete(int start, int end)
- start 위치에서 (end-1)까지의 문자열을 삭제
6) StringBuffer insert(int offset, String s)
- offset 위치부터 s를 삽입
7) StringBuffer replace(int start, int end, String s)
- start 위치부터 (end-1)까지의 문자열을 s로 교체
8) StringBuffer reverse()
- 문자열을 역순으로 변경 - String 클래스를 사용할 때의 문제점
- String 은 immutable 클래스
- 문자열을 빈번하게 변경하는 프로그램이라면 기존 String 객체는 놔둔 채 새로운 String 객체가 계속 생성 됨
- 메모리 낭비가 발생
- String 은 immutable 클래스
포장 클래스
- 기본형을 참조형으로 표현하기 위한 클래스
- 기본형의 값을 가지고 객체로 포장함
- 사용목적
- 메소드의 인자로 객체가 필요할 때
- 클래스가 제공하는 상수를 사용할 때
- 클래스가 제공하는 다양한 메소드를 사용할 때
- 메소드의 인자로 객체가 필요할 때
기본형 | 참조형 |
---|---|
byte | Byte |
short | Short |
int | Integet |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
- Number 클래스
포장 클래스의 추상 부모 클래스
- Number의 자식 클래스에서 구현된 주 메소드
1) byte byteValue(), short shortValue();
- 객체를 해당 기본형의 숫자로 변환
2) int compareTo(Byte anoterByte) - this와 인자를 비교하여 같으면 0을 리턴
3) boolean equals(Object obj) - 같은 유형이고, 값이 같으면 true를 리턴
- 객체를 해당 기본형의 숫자로 변환
- Number의 자식 클래스에서 구현된 주 메소드
-
String과 기본형 데이터 간의 변환
포장 클래스가 제공하는 static 메소드를 사용함
1) String을 int(또는 long) 형으로 변환할 때
- int n = Integer.parseInt(“123”);
- long l = Long.parseLong(“1234”);
2) int형(또는 long)을 String 형으로 변환
- String s1 = Integer.toString(4);
- String s2 = Long.toString(5);
- String s3 = String.valueOf(123); -
Integer 클래스 (이외 Number 타입도 유사한 기능 제공)
1) static int parseInt(String s) : String을 int로
2) static String toString(int i) : int를 String으로
3) static Integer valueOf(int i) : int를 Integer로
4) String toString : Integer를 String으로
5) static Integer valueOf(String s) : String을 Integer로 - 박싱
- 기본형 데이터를 포장 클래스의 객체로 변환하는 것
- 기본형에서 포장 클래스의 객체로 자동 변환되는 것
- 인자에 전달되거나 변수에 대입될 때 적용됨
- ex) Double radius = new Double(2.59); // 구식방식
- ex) Double radius = Double.valueOf(10.4) // 직접 valueOf() 사용
- ex) Double radius = 2.59 // 자동 박싱. 제일 많이 사용
- 기본형 데이터를 포장 클래스의 객체로 변환하는 것
- 언박싱
- 포장 클래스의 객체를 기본형 데이터로 변환하는 것
- 포장 클래스에서 기본형Value() 메소드를 사용
- 인자에 전달되거나 변수에 대입될 때 적용
- ex) double r = radius.doubleValue(); // 직접 객체.기본형value() 사용
- radius가 Double형 객체라고 가정
- radius가 Double형 객체라고 가정
- ex) double r = radius; // 자동 언박싱
- ex) System.out.println(new Integer(3)%2); // 연산되면서 자동 언박싱
- 포장 클래스의 객체를 기본형 데이터로 변환하는 것
- System 클래스
- Java 플랫폼 및 시스템과 관련된 기능 제공
- 유용한 클래스 필드와 메소드를 가짐
- 모든 멤버는 static, 사용 시 객체를 생성할 필요 없음
- 주요기능
- 표준 입출력
- JVM 또는 운영체제 속성과 시스템 환경 변수의 사용
- 배열 복사
- 기타…
1) System.in
- 표준 입력 스트림으로 InputStream 유형
- 키보드로부터 입력을 받을 때 사용
- System.in.read()는 키보드로부터 1바이트 문자를 입력 받음
2) System.out
- 표준 출력 스트림으로 PrintStream 유형
- 화면에 데이터를 출력할 때 사용
3) System.err
- 표준 에러 출력 스트림으로 PrintStream 유형
- 오류 메시지를 화면에 출력할 때 사용 - 표준 입출력
- Java 플랫폼 및 시스템과 관련된 기능 제공