디폴트 패키지 : 현재 디렉터리. package 선언분이 없이 만들어진 클래스의 패키지
서로 다른 패키지 안에 들어 있는 클래스나 인터페이스를 사용하는 방법
- 클래스에 패키지 이름을 붙여서 참조
- 개별 클래스를 import
- 전체 클래스를 import : 하나의 패키지 안에 포함된 모든 클래스를 포함하려면 *사용
JAR 압축 파일(.jar): 클래스 파일은 또한 JAR파일 형태로 저장될 수 있다. JAR 파일은 여러 개의 클래스 파일을 압축하여서 가지고 있다.
자바의 기본 패키지는 java로 시작, 확장 패키지는 javax로 시작
모듈: 관련있는 여러개의 자바 패키지를 하나로 묶어 놓은 단위. 모듈을 구성하는 패키지에는 여러 개의 자바 클래스파일(*.class),즉 API가 존재
java.base: 모든 모듈이 의존하는 기본모듈로, 이 모듈에 포함되어 있는 패키지는 댜부분의 자바 프로그램에서 않이 사용하는 것들
패키지 | 기능(설명) |
java.io | 외부 데이터 입출력을 처리하는 기능 |
java.lang | 프로그램 개발 시 기본적으로 필요한 기능 |
java.net | 네트워크를 위한 클래스와 인터페이스 |
java.security | 보안 프레임워크를 위한 클래스와 인터페이스 |
java.sql | 데이터베이스에 저장된 데이터를 접근하기 위한 기능 |
java.util | 날짜, 시간, 컬렉션 처리에 관한 기능 |
java.text | 날짜와 숫자를 원하는 형태의 문자열로 만들어 주는 포맷 클래스 제공 |
java.nio | 데이터 저장을 위한 Buffer및 새로운 입출력 클래스 제공 |
java.awt | 그래픽과 이미지 관련 기능 |
java.swing | UI 구현 기능 |
java.lang패키지 : 자바 프로그램늬 기본적인 클래스를 담은 패키지, 포함된 클래스와 인터페이스는 import 없이 사용
클래스 | 설명 |
Object 클래스 | 모든 클래스의 최상위 클래스 |
Math 클래스 | 각종 수학 메서드(최대값, 최소값, 난수)들을 포함하는 클래스 |
Wrapper 클래스 | 기본 자료형(기초형)에 대응된 클래스 기본타입의 데이터를 갖는 객체를 만들 때 사용 문자열을 기본 타입으로 변환할 때 사용 |
String 클래스 | 문자열을 저장하고 여러가지 정보를 얻을 때 클래스 |
System 클래스 | 표준 입출력 클래스 표준 입력 장치 (키보드)로부터 데이터를 입력 받을 때 사용. 표준 출력 장치(모니터)로 출력하기 위해서 사용 |
Class 클래스 | JVM에 로드된 클래스에 대한 정보를 얻기 위한 클래스 |
Array 클래스 | 배열을 조작(비교, 복사, 정렬, 찾기)할 때 사용 |
Calendar 클래스 | 운영체제의 날짜와 시간을 얻을 때 사용 |
Date 클래스 | 날짜와 시간을 얻을 때 사용 |
Objects 클래스 | 객체 비교, 널 여부 등을 조사할 때 사용 |
StringTokenizer 클래스 | 특정 문자로 구분된 문자열을 나누고자 할 때 사용 |
Random 클래스 | 난수를 얻을 때 사용 |
Object클래스 : 모든 클래스의 최상위 클래스
protected Object clone() | 객체 자신의 복사본을 생성하여 반환한다. |
public boolean equals(Object obj) | obj가 이 객체와 같은지를 나타낸다. |
protected void finalize() | 가비지 콜렉터에 의하여 호출된다. |
public final Class getClass() | 객체의 실행 클래스를 반환한다. |
public int hashCode() | 객체에 대한 해쉬 코드를 반환한다. |
public String toString() | 객체의 문자열 표현을 반환한다. |
String 클래스 : 자바는 기초 자료형으로 문자열을 지원하지 않는다. 자바에서는 문자열을 클래스형으로 다룬다.
- String 클래스의 생성자를 사용해서 문자열 객체 생성 : String클래스는 문자열 객체를 생성하면서 상수로 인식.한 번 생성되면 문자열을 수정할 수 없다.
- 문자열 리터럴을 사용해서 문자열 객체 생성
String pool : 큰따옴표로 생성된 String 인스턴스들이 위치하는 논리적으로 구분된 영역. 만약 String pool에서 생성하려는 문자열과 똑같은 문자열을 가진 String 인스턴스가 있다면 새로 생성하지 않고 기존 인스턴스의 주솟값을 반환한다.
큰따옴표로 생성하면 무조건 인스턴스를 생성하는 것이 아니고 힙 메모리에 고유한 영역인 String pool을 찾아간다.
String 클래스의 생성자
생성자 | 설명 |
String(String str) | 문자열을 갖는 String 객체를 생성한다. |
String(char[] value) | 문자형 배열을 갖는 String객체를 생성한다. |
String(byte[] value) | 바이트 배열을 갖는 String 객체를 생성한다. |
String 클래스 : 사용빈도 높은 메소드
리턴 타입 | 메서드명(매개변수) | 설명 |
char | charAt(int index) | 지정된 인데스 위치에 있는 문자를 리턴한다. |
boolean | equals(Object anObj) | 전달받은 문자열(anObj)과 String 객체의 문자열이 같은지 비교해 결과를 리턴한다. |
byte[] | getBytes() | 문자열을 바이트배열(byte[])로 리턴한다. |
byte[] | getBytes(Charset charset) | 주어진 문자셋으로 인코딩한 byte[]로 리턴한다. |
int | indexOf(String str) | 문자열내에서 주어진 문자열의 위치를 리턴한다.(존재하지 않으면 -1을 리턴) |
int | length() | 총 문자의 수를 리턴한다. |
String | replace(char oldChar, char newChar) | 문자열내에서 oldChar를 newChar로 변환하여 리턴한다. |
String | substring(int beginIndex, int endIndex) | 시작인덱스로부터 마지막인덱스 전까지 문자열을 리턴한다. |
String | toLowerCase() | 소문자로 변환한 새로운 문자열을 리턴한다. |
String | toUpperCase() | 대문자로 변환한 새로운 문자열을 리턴한다. |
String | trim() | 앞뒤 공백을 제거한 새로운 문자열을 리턴한다. |
String | valueOf(int i) valueOf(double d) |
기초 자료형의 값을 문자열로 리턴한다. |
String | concat(String str) | 전달받은 문자열(str)을 해당 메서드를 호출한 String 객체의 문자열 뒤에 합쳐 새로운 문자열을 생성해서 반환한다 |
String | contains(String str) | 전달받은 문자열(str)이 String 객체의 문자열에 포함되었는지를 검사한다. |
String | intern() | 문자열을 상수 풀에 등록하고 이미 같은 문자열이 존재하면 해당 문자열의 참조값을 반환한다. |
바이트 배열로 변환(getBytes()) : 시스템의 기본 문자셋으로 인코딩된 바이트 배열 얻기
[byte[] bytes = "문자열".getBytes(); ]
문자열 찾기(indexOf())
- 매개값으로 주어진 문자열이 시작되는 인덱스 리턴
- 주어진 문자열이 포함되어 있지 않으면 -1 리턴
- 특정 문자열이 포함되어 있는지 여부 따라 실행코드 달리할 때 사용
문자열 변환(valueOf()) : 기본 타입의 값을 문자열로 변환
문자열 길이(length()): 공백도 문자에 포함
문자열 대치(replace()): 첫 번째 매개값인 문자열 찾음, 두 번째 매개값인 문자열로 대치
String oldStr = "자바 프로그래밍";
String newStr = oldStr.replace("지바"."JAVA");
문자열 결합 연산자 : +
StringBuffer, StringBuilder
- StringBuffer 객체에 저장된 문자열은 수정할 수 있다.
- String 객체와 다르게 StringBuffer 객체는 +연산자를 통해 매번 새로운 String 객체를 생성하지 않고, append()메서드를 통해 String 객체 하나만으로도 문자열을 다룰 수 있다.
- 버퍼(buffer: 데이더를 임시로 저장하는 메모리, 문자열을 처리하기 위해 확보한 넉넉한 메모리 공간)에 문자열 저장,
- 버퍼 내부에서 추가, 수정, 삭제 작업 가능
- 버퍼에서 문자열을 수정하므로 String처럼 새로운 문자열을 만들 필요가 없다.
- 차이 : 생성된 인스턴스를 동시에 여러 곳에서 접근하여 사용할 때
- StringBuffer클래스는 동시에 접근하는 상황에 대처할 수 있고, StringBuilder는 대처할 수 없다.
- 다만 일반적으로 StringBuilder가 더 효율적
capacity() : 버퍼의 크기
length() : 문자열의 길이 수
StringBuffer만이 제공하는 가장 중요한 메서드
- StringBuffer append(String s) : 매개변수로 전달받은 값을 추가한다. 문자열 버퍼의 끝에 여러 종류의 데이터를 추가하는 메서드
- StringBuffer delete(int start, int end) : 매개변수로 전달받은 인덱스 사이의 문자열 삭제한다.
- StringBuffer insert(int offset, String str) : 특정 위치에 여러 종류의 데이터를 문자열로 바꾸어 삽입하게 된다.
Math 클래스 : 모든 메서드는 정적 메서드이므로, 객체를 생성하지 않고도 바로 사용할 수 있다.
Math 클래스의 클래스필드
- Math.E : 오일러 수, 자연로그의 밑 값
- Math.PI : 원주율
Wrapper(기본형을 참조형으로 추상화하는 과정) 클래스 : 기본형과 참조형간의 형변환을 가능하게 해주는 클래스가 래퍼 클래스. 메소드의 인수로 객체 타입만이 요구되면, 기본타입의 데이터를 그대로 사용할 수는 없다. 이때에는 기본 타입의 데이터를 먼저 객체로 변환한 후 작업을 수행해야 한다.
Wrapper 객체 : 기본 타입 값을 내부에 두고 포장하는 객체
Wrapper 클래스는 Wrapper라는 이름의 클래스가 존재하는 것이 아니라 java.lang 패키지에 있는 클래스 중 자바의 기본 데이터 타입과 매핑되는 클래스들을 의미
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
자료형에서 값을 다루는 기본형과 주소를 다루는 참조형간위 형변환을 박싱(boxing)과 언박싱(unboxing)
박싱(valueOf())
- 값을 다루는 기본형 데이터를 잠조형 데이터로 변환하는 것을 의미
- 메모리에서 변환관점으로 보면 스택에 저장된 값을 힙으로 복사하는 과정 묵시적(자동)으로 이루어진다.
- 자동박싱(auto-boxing) : 포장 클래스 타입에 기본값이 대입될 경우 발생
Integer iValue;
iValue = 10;
//정수를 자동으로 Integer 객체로 포장
언박싱(기본타입명 + Value())
- 반대로 힙에 저장된 값을 스택에 복사하는 과정이다.
- 힙의 데이터를 기본형으로 변환할 때 언박싱이 일어난다.
- 자동언박싱(auto-unboxing) : 기본 타입에 포장 객체가 대입될 경우 발생
System.out.println(iValue+1);
//iValue는 자동으로 int형으로 변환
#문자열을 기본 타입 값으로 변환 : parse + 기본타입 명 -> 정적 메소드
int num = Integer.parseInt("10") //문자열을 int형으로 반환
double num = Double.parseDouble("1.2") //문자열을 double형으로 반환
문자열 분리 방법 : String의 split() 메서드 사용(정규표현식을 구분자로 해서 부분 문자열 분리, 배열에 저장하고 리턴), java.util.StringTokenizer클래스 이용
문자열을 구분자를 사용해 나누어 준다. 나누어진 문자열을 토큰이라고 한다. 구분자를 지정하지 않으면 공백이 구분자가 된다.
StringTokenizer클래스
생성자 | 설명 |
StringTokenizer(String str) | 주어진 문자열을 위한 StringTokenizer 객체를 생성한다. |
StringTokenizer(String str, String delim) | 주어진 문자열을 위한 위한 StringTokenizer 객체를 샹성한다. 분리자로 delim을 사용한다. |
StringTokenizer(String str, String delim, boolean returnDelims) | 주어진 문자열을 위한 StringTokenizer 객체를 생성한다. 분리자로 delim을 사용한다. 구분자도 토큰으로 포함할지 여부를 나타낸다. 기본값은 false, 출력하지 않는다. |
메소드명 | 설명 |
int countTokens() | 문자열에 존재하는 토큰의 개수를 반환한다. |
boolean hasMoreTokens() | 나누어진 문자열에서 다음으로 가져올 토큰이 있는지 여부를 검사해서 그 결과를 boolean형으로 반환한다. |
String nextToken() | 나누어진 문자열에서 다음 토큰을 반환한다. |
String nextToken(String delim) | 다음 토큰을 반환하고 분리자를 delim으로 변경한다. |
java.util 패키지
생성자 | 설명 |
Random() | 새로운 난수 발생 객체를 생성한다. |
메소드명 | 설명 |
int nextInt(int n) | 0 과 n전까지의 int형의 난수를 발생한다. |
double nextDouble() | double형의 0.0과 1.0사이의 난수를 발생한다. |
Arrays 클래스 : 모든 메서드는 정적 메소드, 객체를 생성하지 않고도 바로 사용 가능
메소드명 | 설명 |
static void sort(int[] a) | 전달받은 배열의 모든 요소를 오름차순으로 정렬한다.(지정된 int형의 배열을 정렬한다.) |
static void fill(int[] a, int val) | 주어진 val값을 가지고 배열을 채운다 |
static boolean equals(int[] a, int[] b) | 주어진 두 개의 배열이 같으면 true를 반환한다. |
static List asList(Object[] a) | 주어진 배열을 고정길이의 리스트로 변환한다. |
static int[] copyOf(int[] original, int newLength) | 전달받은 배열의 전체 또는 특정 길이만큼을 새로운 배열로 복사하여 반환한다. |
Date 클래스 : 날짜를 표현하는 클래스, 날짜 정보를 객체간에 주고 받을 때 주로 사용
Calendar 클래스 : 날짜와 시간에 관한 처리를 하는 추상클래스
[Calendar now = Calendar.getInstance(); ]