패키지
서로 관련된 클래스와 인터페이스의 컴파일 된 클래스 파일들을 하나의 디렉터리에 묶어 놓은 것
패키지 사용하기
import 사용 x
- 소스 내에서 패키지 이름과 클래스 이름의 전체 경로명을 써주어야 함
java.util.Scanner
import 사용
- 소스의 시작 부분에 사용하려는 패키지 명시(클래스만 명시)
import java.util.Scanner; // 특정 클래스의 경로명만 포함
import java.util.*; // 패키지 내의 모든 클래스 포함
패키지 만들기
패키지 선언
package 패키지명;
- 컴파일한 클래스 파일을 패키지명의 디렉터리에 저장하라는 명령
- 소스 파일의 첫 줄에 선언
- 클래스의 경로명은 "패키지명.클래스명"
디폴트 패키지와 패키지 특징
디폴트 패키지
- package 선언문이 없이 만들어진 클래스의 패키지
- 디폴트 패키지는 현재 디렉터리
패키지의 특징
- 패키지 계층구조
- 패키지별 접근 제한
- 동일한 이름의 클래스와 인터페이스 사용 가능
- 높은 소프트웨어 재사용성
모듈
- 패키지와 이미지 등의 자원을 담은 컨테이너
- 모듈 파일(.jmod)로 저장
자바 모듈화의 목적
자바 컴포넌트들을 필요에 따라 조립하여 사용하기 위함
컴퓨터 시스템의 불필요한 부담 감소
자바의 주요 패키지
java.lang
자바 language 패키지
- 스트링, 수학 함수, 입출력 등 자바 프로그래밍에 필요한 기본적인 클래스와 인터페이스
자동으로 import
java.util
자바 유틸리티 패키지
- 날짜, 시간, 벡터, 해시맵 등 다양한 유틸리티 클래스와 인터페이스
java.io
키보드, 모니터, 프린터, 디스크 등에 입출력을 할 수 있는 클래스와 인터페이스 제공
java.awt
자바 GUI 프로그래밍을 위한 클래스와 인터페이스 제공
javax.swing
자바 GUI 프로그래밍을 위한 스윙 패키지
Object 클래스
특징
java.lang 패키지에 포함
모든 클래스의 슈퍼 클래스
- 모든 클래스에 강제 상속
- 모든 객체가 공통으로 가지는 객체의 속성을 나타내는 메소드 보유
주요 메소드
메소드 | 설명 |
boolean equals(Object obj) | obj가 가리키는 객체와 현재 객체를 비교해서 같으면 true 리턴 |
Class getClass() | 현 객체의 런타임 클래스를 리턴 |
int hashCode() | 현 객체에 대한 해시 코드 값 리턴 |
String toString() | 현 객체에 대한 문자열 표현을 리턴 |
void notify() | 현 객체에 대해 대기하고 있는 하나의 스레드 깨움 |
void notifyAll() | 현 객체에 대해 대기하고 있는 모든 스레드 깨움 |
void wait() | 다른 스레드가 깨울 때까지 현재 스레드를 대기 |
String toString
객체를 문자열로 반환
Object 클래스에 구현된 toString()이 반환하는 문자열
public String toStrong() {
return getClass(),getName() + "@" + Integer.toHexString(hashCode());
}
'객체 + 문자열' => '객체.toString() + 문자열' 자동변환
equals()
== 연산자: 두 개의 레퍼런스 비교
bollean equals(Object obj): 객체 내용이 같은지 비교
Wrapper 클래스
자바의 기본 타입을 클래스화한 8개 클래스
기본 타입 | byte | short | int | long |
Wrapper 클래스 | Byte | Short | Integer | Long |
기본 타입 | char | float | double | boolean |
Wrapper 클래스 | Character | Float | Double | Boolean |
이름이 Wrapper인 클래스는 존재하지 않음
기본 타입의 값을 객체로 다룰 수 있게 함
기본 타입의 값으로 Wrapper 객체 생성
Integer i = Integer.valueOf(10);
Character c = Character.valueOF('c');
Double f = Double.valueOf(3.14);
Boolean b = Boolean.valueOf(true);
문자열로 Wrapper 객체 생성
Integer i = Integer.valueOf("10");
Double f = Double.valueOf("3.14");
Boolean b = Boolean.valueOf("false");
Float 객체는 double 타입의 값으로 생성 가능
Integer 클래스의 주요 메소드
메소드 | 설명 |
static int bitCount(int i) | 정수 i의 이진수 표현에서 1의 개수 리턴 |
float floatValue() | float 타입으로 값 리턴 |
int intValue() | int 타입으로 값 리턴 |
long longValue() | long 타입으로 값 리턴 |
short shortValue() | short 타입으로 값 리턴 |
static int praseInt(String s) | s를 10진 정수로 변환한 값 리턴 |
static String toBinaryString(int i) | 정수 i를 이진수 표현으로 변환한 문자열 리턴 |
static String toHexString(int i) | 정수 i를 16진수 표현으로 변환한 문자열 리턴 |
static String toOctalString(int i) | 정수 i를 8진수 표현으로 변환한 문자열 리턴 |
static String toString(String i) | 정수 i를 문자열로 변환하여 리턴 |
static Integer valueOf(int i) | 정수 i를 담은 Integer 객체 리턴 |
static Integer valueOf(String s) | 문자열 s를 정수로 변환하여 담고 있는 Integer 객체 리턴 |
Wrapper 활용
Wrapper 객체로부터 기본 타입 값 알아내기
문자열을 기본 데이터 타입으로 변환
기본 타입을 문자열로 변환
박싱과 언박싱
박싱(boxing) - 기본 타입의 값을 Wrapper 객체로 변환
언박싱(unboxing) - Wrapper 객체에 들어 있는 기본 타입의 값을 빼내는 것
String
String - java.lang.String
string 클래스는 하나의 문자열 표현
String생성자
생성자 | 설명 |
String() | 빈 스트링 객체 생성 |
String(char[] value) | char 배열에 있는 문자들을 스트링 객체로 생성 |
String(String original) | 매개변수로 주어진 문자열과 동일한 스트링 객체 생성 |
String(StringBuffer buffer) | 매개변수로 주어진 스트링 버퍼의 문자열을 스트링 객체로 생성 |
스트링 리터럴과 new String()
스트링 생성 방법, String s = "Hello";
String 객체로 생성, String t = new String("Hello");
스트링 객체의 특징
스트링 객체는 수정 불가능
String s = new String("Hello");
String t = s.concat("Java"); // 스트링 s에 "java"를 덧붙인 새로운 스트링 객체 리턴
따라서 스트링 비교 시 반드시 equals() 사용
주요 메소드
메소드 | 설명 |
char charAt(int index) | index 인덱스에 있는 문자 값 리턴 |
int codePointAt(int index) | index 인덱스에 있는 유니코드 값 리턴 |
int compareTo(String anotherString) | 두 스트링을 사전 순으로 비교하여 두 스트링이 같으면 0, 현 스트링이 anotherString보다 먼저 나오면 음수, 아니면 양수 리턴 |
String concat(String str) | 현재 스트링 뒤에 str 스트링을 덧붙인 새로운 스트링 리턴 |
boolean contains(CharSequence s) | s에 지정된 문자들을 포함하고 있으면 true 리턴 |
int length() | 스트링의 길이(문자 개수) 리턴 |
String replace(Charsequence target, Charsequence replacement) | target이 지정하는 일련의 문자들을 replacement가 지정하는 문자들로 변경한 스트링 리턴 |
String[] split(String regex) | 정규식 regex에 일치하는 부분을 중심으로 스트링을 분리하고, 분리된 스트링들을 배열로 저장하여 리턴 |
String subString(int beginIndex) | beginIndex 인덱스부터 시작하는 서브 스트링 리턴 |
String toLowerCase() | 소문자로 변경한 스트링 리턴 |
String toUpperCase() | 대문자로 변경한 스트링 리턴 |
String trim() | 스트링 앞뒤의 공백 문자들을 제거한 스트링 리턴 |
문자열 연결
+ 연산자로 문자열 연결
피연산자에 문자열이나 객체가 포함되어 있는 경우
- 객체는 객체.toString()을 호출하여 문자열로 변환하여 연결
- 기본 타입 값은 문자열롤 변환하여 연결
concat()
StrngBuffer 클래스
가변 크기의 문자열 저장 클래스
- Java.lang.StringBuffer
- String 클래스와 달리 문자열 변경 가능
- StringBuffer 객체의 크기는 스트링 길이에 따라 가변적
생성자
생성자 | 설명 |
StringBuffer() | 초기 버퍼의 크기가 16인 스트링 버퍼 객체 생성 |
StringBuffer(charSequence seq) | seq가 지정하는 일련의 문자들을 포함하는 스트링 버퍼 생성 |
StringBuffer(int capacity) | 지정된 초기 크기를 갖는 스트링 버퍼 객체 생성 |
StringBuffer(String str) | 지정된 스트링으로 초기화된 스트링 버퍼 객체 생성 |
주요 메소드
메소드 | 설명 |
StringBuffer append(String str) | str 스트링을 스트링 버퍼에 덧붙임 |
StringBuffer append(StringBuffer sb) | sb 스트링 버퍼를 현재의 스트링 버퍼에 덧붙임, 현재 스트링 버퍼의 내용이 바뀜 |
int capacity() | 스트링 버퍼의 현재 크기 리턴 |
StringBuffer delete(int start, int end) | start 위치에서 end 위치 앞까지 부분 문자열 삭제 |
StringBuffer insert(int offeset, String str) | str 스트링을 스트링 버퍼의 offset 위치에 삽입 |
StringBuffer replace(int start, int end, String str) | 스트링 버퍼 내의 start 위치의 문자부터 end가 지정하는 문자 앞의 서브 스트링을 str로 대치 |
StringBuffer reverse() | 스트링 버퍼 내의 문자들을 반대 순서로 변경 |
void setLength(int newLength) | 스트링 버퍼 내 문자열 길이를 newLength로 재설정, 현재 길이보다 큰 경우 널 문자('')로 채우며 작은 경우에는 기존 문자열이 잘림 |
StringTokenizer 클래스
하나의 문자열을 여러 문자열로 분리
구분 문자(delimiter) - 문자열을 분리할 때 사용되는 기준 문자
토큰(token) - 구분 문자로 분리된 문자열
String query = "name=kitan&addr=seoul&age=21";
StringTokenizer st = new StringTokenizer(query, "&");
// '&'를 구분 문자로 사용
StringTokenizer st = new StringTokenizer(query, "&=");
// '&'와 '='을 구분 문자로 사용
String 클래스의 split() 메소드를 이용하여 동일한 구현 가능
생성자
생성자 | 설명 |
StringTokenizer(String str) | str 스트링의 각 문자를 구분 문자로 문자열을 분리하는 스트링 토크나이저 생성 |
StringTokenizer(String str, String delim) | str 스트링과 delim 구분 문자로 문자열을 분리하는 스트링 토크나이저 생성 |
StringTokenizer(String str, String delim, boolean returnDlims) | str 스트링과 delim 구분 문자로 문자열을 분리하는 스트링 토크나이저 생성, returnDelims가 true이면 delim이 포함된 문자도 토큰에 포함됨 |
주요 메소드
메소드 | 셜명 |
int countTokens() | 스트링 토크나이저가 분리한 토큰의 개수 리턴 |
boolean hasMoreTokens() | 스트링 토크나이저에 다음 토큰이 있으면 true 리턴 |
String nexToken | 스트링 토크나이저에 틀어 있는 다음 토큰 리턴 |
Math 클래스
산술 연산 메소드 제공
java.lang.Math
모든 메소드는 static 타입: 클래스 이름으로 바로 호출해야 함
메소드 | 설명 |
static double abs(double a) | 절댓값 리턴 |
static double cos(double a) | 코사인값 리턴 |
static double sin(double a) | 사인값 리턴 |
static double tan(double a) | 탄젠트값 리턴 |
static double exp(double a) | \(e^{a}\)값 리턴 |
static double ceil(double a) | 올림 |
static double floor(double a) | 내림 |
static double max(double a, double b) | 큰 수 리턴 |
static double min(double a, double b) | 작은 수 리턴 |
static double random() | 0이상 1미만 임의의 실수 리턴 |
static long round(double a) | 반올림 리턴 |
static double sqrt(double a) | 제곱근 리턴 |
Calendar 클래스
java.util 패키지
시간과 날짜 정보 저장 관리
필드
필드 | 의미 | 필드 | 의미 |
YEAR | 년도 | DAY_OF_MONTH | 한 달의 날자 |
MONTH | 달(0~11) | DAY_OF_WEEK | 한 주의 요일 |
HOUR | 시간(0~11) | AM_PM | 오전, 오후 구분 |
HOUR_OF_DAY | 24시간을 기준으로 한 시간 | MINUTE | 분 |
SECOND | 초 | MILLISECIND | 밀리초 |
객체 생성
Calendar now = Calendar.getInstance();
now객체는 현재 날짜와 시간 정보를 가지고 생성
Calendar는 추상 클래스이므로 new Callendar() 하지 않음
날짜와 시간 알아내기
int year = now.get(Calendar.YEAR);
int month = new.get(Calendar.MONTH) + 1;
날짜와 시간 설정하기
now.clear(); // 현재 날짜와 시간 정보 삭제
now.set(2016, 11, 25); // 2016년 12월 25일로 설정
now.set(Calendar.HOUR_OF_DAY, 20) // 저녁 8시로 설정
now.set(Calendar.MINUTE, 30); // 30분으로 설정
'전공 > 객체지향프로그래밍' 카테고리의 다른 글
[객체지향프로그래밍][Java] Set 심화 내용(HashSet, TreeSet) (0) | 2023.06.01 |
---|---|
[객체지향프로그래밍][Java] List 심화 내용(Iterator) (0) | 2023.06.01 |
[객체지향프로그래밍][Java] 인터페이스의 구성 요소 심화 내용 (0) | 2023.05.31 |
[객체지향프로그래밍][Java] 상속 3 (추상 메소드, 추상 클래스, 인터페이스) (0) | 2023.05.08 |
[객체지향프로그래밍][Java] 상속 2 (오버라이딩) (0) | 2023.04.27 |