11-1. java.lang 패키지
[java.lang 패키지]
: 자바 프로그램의 기본 클래스 담고 있는 패키지 ( import 없이 사용 O)
[자바 API 도큐먼트]
API : Application Programming Interface
**개발에 자주 사용되는 클래스,인터페이스 모음 라이브러리**
-8버전 : 전체 자바 표준 API를 패키지별로 정리
-11버전 : 전체 자바 표준 API를 모듈별로 정리
: 이클립스로 접근 시.
클래스이름 드래그 -> f1키 누르면 자동으로 API 도큐먼트 Help 뷰 -> 링크 클릭
[API 도큐먼트 읽기]
최상단 SUMMARY : 해당 클래스 내에 선언된 멤버의 종류 나열
- 클래스의 선언부 확인
-final / abstract 클래스 키워드 확인
-extends 뒤에 언급된 부모 클래스 확인
-implements 뒤에 언급된 인터페이스 확인
2. 필드 목록 확인 : FIELD
3. 생성자 목록 확인 : CONSTR
4. 메소드 목록 확인 : METHOD
🟩[Object 클래스 ]
: 자바의 최상위 부모 클래스
: 자바의 모든 클래스는 Object 클래스의 자식 or 자손 클래스들
[equals () 메소드]
<객체 번지 비교> : 기본 equals() 메소드
: 비교 연산자 ==와 동일 결과
public boolean equals( 모든 객체 ) { ... }
<객체 논리적 동등 비교> : 재정의 equals () 메소드 :
: 1. 타입 일치 2. 데이터값 일치
=> 동일 객체 X 동등 객체 O
1) instanceof 연산자로 타입 일치 여부 확인
2) equlals () 메소드로 내부 필드값 동일 여부 확인 -> true 리턴
@Override
public boolean equals(Object obj) {
if(obj instanceof Member) {
Member member = (Member) obj;
if(id.equals(member.id)) {
return true;
}
}
return false;
}
[hashCode() 메소드]
<객체 해시코드> : 기본 hashCode() 메소드
: 객체 식별하는 하나의 정수값 리턴, 객체마다 다른 값
<객체의 논리적 동등 비교 > : 재정의 hashCode() 메소드
: 1. hashCode() 리턴값 동일 2.equals() 리턴값 True
=> 동등 객체
@Override
public int hashCode() {
return id.hashCode();
}
[toString() 메소드]
<객체 문자 정보> : 기본 toString() 메소드
: 객체를 문자열로 표현한 객체 문자 정보 리턴
: ‘클래스@16진수해시코드’ 문자 정보 리턴
<Date 클래스 재정의한 toString() 메소드>
: 현재 시스템의 날짜와 시간 정보 리턴
<String 클래스 재정의한 toString() 메소드>
: 저장하고 있는 문자열 리턴
<System.out.println() 메소드 매개값에 ‘객체’ 주기>
: 매개값에 기본타입 - > 해당값 그대로 출력
: 매개값에 객체이름 - > 해당 객체의 toString() 메소드 호출하여 리턴값 출력
🟩[System 클래스]
: 운영체제의 일부 기능을 이용하여 프로그램 종료, 입력, 출력 등 가능
: System 클래스의 모든 필드, 메소드는 static 정적타입 (객체 생성없이 클래스로 직접접근)
[exit() 메소드]
<프로그램 강제 종료> : exit() 메소드
System.exit(0); //프로그램 강제 종료
cf. break문 -> 해당 블록 탈출
[currentTime() 메소드 / nanoTime() 메소드]
<현재 시간 읽기> : currentTimeMillis() / nanoTime()
currentTimeMillis() 메소드 : 밀리세컨드(1/1000초) 단위로 리턴
nanoTime() 메소드 : 나노세컨드 단위로 리턴
주로 컴퓨터의 현재 시간 읽어서 프로그램 실행 소요 시간 측정에 사용됨
🟩[Class 클래스]
: 클래스. 인터페이스의 메타 데이터를 관리
: 메타 데이터(클래스 이름, 생성자.필드.메소드의 정보)
: 주로 Class 객체 얻은 후 -> 정보 얻는 용도로 사용 多
<Class 객체 얻기> : getClass() / forName()
- 클래스로부터 객체 얻기 (객체 생성X)
- Class clazz = 클래스이름.class
- Class clazz = Class.forName(“클래스이름”)
- 객체로부터 객체 얻기 (객체 이미 생성된 경우)
- Class clazz = 참조변수.getClass();
<이름 정보 얻기> : getName() / getSimpleName() / getPackage().getName()
- 클래스 전체 이름 얻기 : getName()
- 클래스 간단 이름 얻기 : getSimpleName()
- 패키지 이름 얻기 : getPackage().getName()
<클래스 경로 활용 -> 리소스 절대 경로 얻기> : getResourse().getPath()
String path1 = clazz.getResourse(“photo1.jpg”).getPath();
String path2 = clazz.getResourse(“images/photo2.jpg”).getPath();
🟩[String 클래스]
<String의 여러 생성자>
- 배열 전체를 String 객체로 생성
String str = new String(byte[] bytes)
- 지정한 문자셋으로 디코딩
String str = new String(byte[] bytes. String charsetName)
- 배열의 offset 인덱스 위치부터 length만큼 String 객체로 생성
String str = new String(byte[] bytes, int offset, int length)
- 지정한 문자셋으로 디코딩
String str = new String(byte[] bytes, int offset, int length, String charsetName)
[String 클래스 주요 메소드]
1) charAt() 메소드 : 매개값으로 주어진 인덱스 번호 특정 위치의 문자 추출 리턴
2) eqauls() 메소드 : 두 문자열 비교 (Object클래스의 메소드를 String 클래스가 재정의)
3) (인코딩) getBytes() 메소드 : 문자열 -> 바이트 배열로 변환 저장 (인코딩)
- getBytes() : 기본 문자셋으로 인코딩된 바이트 배열 리턴
- getBytes( Charset charset) : 특정 문자셋으로 인코딩된 바이트 배열 리턴
: 잘못된 문자셋 매개값 줄 경우
→ java.io.UnsupportedEncodingException 발생
→ 예외처리필요(try/catch문)
++++(디코딩) 바이트 배열 -> 다시 문자열로 변환 (디코딩) : <String 생성자 이용>
- String str = new String(byte[]bytes) : 기본 문자셋으로 디코딩
- String str = new String(byte[] bytes, String charsetName) ; 특정 문자셋 디코딩
- 특정문자셋 = EUC-KR(알파벳 1바이트, 한글 2바이트), UTF-8(알파벳 1바이트, 한글 3바이트) ..
4) indexOf() 메소드 : 매개값으로 주어진 문자열(포함O) -> 시작 위치 인덱스 번호 리턴
: 매개값으로 주어진 문자열(포함X) -> -1 리턴
: 주로 특정 문자열 포함 여부 확인 시에 자주 사용됨
문자열.indexOf(“찾는 문자열”)
5) length() 메소드 : 공백을 포함한 문자열 길이를 리턴
6) replace() 메소드 : 문자열1->문자열2로 대치. 단, 원본 문자열 조작X -> 완전히 new 문자열 생성
참조변수.replace(“문자열1”, “문자열2”); // 문자열1 -> 문자열2 대치
7) substring() 메소드 : 문자열 뽑아 추출
- substring( int begen, int end) : begin 위치~end 위치의 문자열 뽑아 추출
- substring (int begin) : begin 지정 위치~ 해당 끝까지 문자열 뽑아 추출
8) 알파벳 소.대문자 변경
- toLowerCase() 메소드: 문자열을 모두 소문자로 바꾼 new 문자열 객체 리턴
- toUpperCase() 메소드 : 문자열을 모두 대문자로 바꾼 new 문자열 객체 리턴
<대소문자 관계없이 영어 문자열 비교 시>
(1) 대소문자 통일 시킨 후 -> equals() 메소드 사용 OR (2) equalsIgnoreCase() 메소드 사용
9) trim () 메소드 : 문자열 앞뒤 공백 잘라낸 new 문자열 생성 후 리턴. (중간 공백 제외)
10) ValueOf() 메소드 : 기본타입 -> 문자열로 변환
매개변수 타입 별 재정의된 VlaueOf(기본타입) 사용
🟩[Wrapper(포장) 클래스]
: 기본타입 값을 갖는 포장 객체 생성
: 포장하고 있는 기본 타입 값은 외부에서 변경할 수 없다.
내부의 값을 변경 원하면 - > 내부 값 바꾼 완전히 new 새로운 객체 생성해야 함
박싱(Boxing)
: 기본 타입 값 -> 포장 객체로 만드는 과정
(1) new 생성자 이용 -> ‘박싱’
매개값으로 ‘기본타입의 값’
ex. Integer obj1 = new Integer(100); //해당 기본타입 값을 갖는 포장객체
매개값으로 ‘문자열’
ex. Integer obj = new Ineger(“1000“); //해당 문자열을 기본타입 값으로 변환한
(2) 정적 valueOf() 메소드 이용 ‘-> 박싱’
ex. Integer obj = Integer.valueOf(1000); //기본 타입 값 -> 포장 객체 생성
ex. Integer obj = Integer.valueOf(“1000”); //해당 문자열을 기본타입 값으로 갖는 포장객체
<자동 박싱, 자동 언박싱>
◾자동 박싱 : 포장 클래스 타입에 기본값 대입될 경우 발생
ex. Integer obj = 100; //포장 클래스 타입에 직접 값이 대입됨
◾자동 언박싱 : 기본 타입에 포장 객체가 대입될 경우 발생
: 포장객체변수와 기본타입 간 연산 시 발생
ex. Integer obj = new Integer(200);
int value1 = obj;
ex. int value2 = obj + 100;
<문자열 -> 기본타입값으로 변환>
: parse_기본타입 메소드() 이용
ex, int num = Integer.parseInt(“1000”);
ex, double num = Double.parseDouble(“3.57”);
ex. boolean bool = Boolean.parseBoolean(“true”);
<포장 객체의 내부 값 비교>
1) 직접 내부 값 언박싱 후 비교
ex. obj1.intValue() == obj2.intValue();
2) 포장클래스의 equals() 메소드로 내부 값 비교
ex. obj1.equals(obj2);
🟩[Math 클래스]
: 수학 계산에 사용할 메소드 제공
: 모두 정적 메소드이므로 Math클래스로 바로 접근해서 사용 O
[Math클래스의 주요 메소드]
1) 절대값 리턴 : abs() 메소드
2) 올림값 리턴 : ceil() 메소드
double v2 = Math.ceil(-5.3); //-5.0 리턴
**내림값 리턴 : floor() 메소드**
double v3 = Math.floor(5.3); //5.0 리턴
3) 최대값 리턴 : max(a, b) 메소드
int v4 = Math.max(5, 9); // 9 리턴
**최솟값 리턴 : min(a, b) 메소드**
double v5 = Math.min(5.3, 2.5); //2.5리턴
4) 랜덤값 리턴 : random() 메소드
double v6 = Math.random(); // 랜덤값 리턴
5) 가까운 정수의 실수값 리턴 : rint() 메소드
long v7 = Math.rint(5.8); // 6.0 리턴
6) 소숫점 첫째 자리에서 반올림값 리턴 : round() 메소드
1. double v8 = Math.round(5.3); // 5 리턴
2. double v9 = Math.round(5.9); // 6 리턴
<Math.random() 메소드 추가 설명> : 난수 얻기
: 기본적으로 0.0 ~ 0.9 사이의 범위에 속하는 하나의 double 타입 값 리턴
: 메소드 활용하여 다양한 난수 얻기
int num = (int) (Math.random() * n) + start ;
// start ~ (start + n – 1) 에 속하는 범위 속 하나의 정수 랜덤 반환
int num = (int) (Math.randoum() * n) + 1 ;
// 1 ~ n 에 속하는 범위 속 하나의 정수 랜점 반환
11-2. java.util 패키
[java.util 패키지]
: 프로그램 개발 시 자주 사용되는 ‘자료구조’ + ‘날짜 정보 API’ 포함
<날짜 정보 제공 API>
🟩[Date 클래스]
: 특정 시점의 날짜 표현 클래스
- 현재 시각의 Date객체 생성 -> 영문으로 된 날짜 리턴
Date now = new Date();
String str 1 = now.toString(); //toString() 메소드 호출하여 영문 날짜 리턴
System.out.pritnln(str1);
- 원하는 날짜 형식의 문자열로 날짜 리턴
Date now = new Date();
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy년 MM월 dd일 hh시 mm분 ss초”); //import java.text 패키지 별도 포함 필요
String str 2 = sdf.format(now); //format() 메소드 호출하여 원하는 형식 날짜 정보 얻기
System.out.println(str2);
🟩[Calendar 클래스]
: 해당 운영체제의 달력 표현 클래스
: 추상 클래스이므로 new연산자로 객체 생성 불가능
(1) 정적 getInstance() 메소드 이용 -> 현재 운영체제 시간대 기준 하위 객체 생성 후
(2) get() 메소드 이용 -> 날짜와 시간 정보 읽기
'Java > [문법]_Java(자바)' 카테고리의 다른 글
ch13. 컬렉션 프레임워크 (0) | 2021.08.23 |
---|---|
ch12. 스레드 (0) | 2021.08.23 |
ch10. 예외 처리 (0) | 2021.08.05 |
ch09. 중첩 클래스와 중첩 인터페이스 (0) | 2021.08.05 |
ch08. 인터페이스 (0) | 2021.08.04 |