ㄹㅇ 3~4시간 남아다 ㄷㄷㄷ
1. 패키지
패키지
서로 관련이 있는 클래스나 인터페이스의 컴파일된 .class 파일들을 한 곳에 묶어 놓은것
패키지는 곧 디렉토리 구조로 a.b.c는 a/b/c와 동일한 구조이다.
패키지는 import 문을 통해 가져 올 수 있다.
패키지의 선언시 package 키워드를 이용한다.
* 패키지 선언문이 없을때 자바 컴파일러는 해당 클래스나 인터페이스를
디폴트 패키지에 소속시키는데 현재 디렉터리에 해당한다.
2. 자바 JDK의 주요 패키지
JDK는 개발에 필요한 기본적인 기능과 다양한 응용기능을 표준 패키지로 제공하는데
이를 자바 API라고 한다.
java.lang
자바 프로그래밍에 필요한 기본적인 클래스와 인터페이스를 제공하는 패키지
import문 없이 자동으로 임포트되는 특징을 가진다.
3부터 6까지 java.lang 의 클래스들을 알아보자
3. Object 클래스
Object
java.lang에 속한 클래스, 모든 클래스의 슈퍼 클래스인 최상위 클래스이다.
hashCode(), getName()을 통해 객체의 정보를 얻을 수 있다.
toString 메소드
객체를 문자열로 변환하는 메소드.
객체들은 해당 메소드를 오버라이딩하여 자신만의 문자열을 리턴가능 하다. ( * public 으로 선언 * )
객체 + 문자열 같은 연산 혹은 객체의 출력이 요구될 때 자동으로 호출되는 메소드이다.
객체 비교와 equals() 메소드
기본타입의 값을 비교할 때 사용한 ==으로 객체를 비교시 객체의 레퍼런스 값을 비교한다.
즉 같은 내용임에도 객체는 독립적이므로 false를 리턴하게 된다.
이러한 문제점을 해결하기 위하여 equals 메소드를 사용한다.
equals(Object obj) 메소드는 객체의 내용이 같은지를 비교한다.
해당 메소드도 오버라이딩을 통해 개발자의 입맛에 맞게 변형이 가능하다.
4. Wrapper 클래스
객체 지향 언어이므로 객체 단위로 처리하는 경우가 많아 불편함 해소를 목적으로 만들어졌다.
/* 이름이 Wrapper인 클래스가 아니다.
그저 기본 타입을 객체화한 8개의 클래스를 통칭한 말일 뿐이다. */
Byte, Short, Integer, Long, Character, Float, Double, Boolean 의 통칭이다.
cf. Character을 제외한 나머지 Wrapper 클래스의 경우
문자열로 된 값을 주어도 알아서 parse 메소드가 작동하여 인식한다.
객체에 들어있는 기본 타입 값 알아내기
객체 생성 후, type이름Value(); 메소드를 사용한다.
문자열을 기본 타입으로 변환
parseInt, parseBoolean, parseDouble 등을 활용,
static타입이기 때문에 바로 호출 가능.
기본 타입을 문자열로 변환
toString, to(진법)String 메소드를 이용한다. cf. 8진법 Octal
역시나 static 타입이다.
박싱과 언박싱
객체과 되는 것이 박싱이고 역과정이 언박싱이며
JDK 1.5부터 자동 박싱 / 자동 언박싱이 일어 나게되었다.
Wrapper 클래스의 활용
Character클래스의 메소드
toLowerCase
isDIgit, isAlphabetic
5. String과 관련된 클래스
String 객체와 스트링 리터럴
String str = "Hello"; || String str = new String("Hello");
전자는 스트링 리터럴이고 후자는 객체 생성으로 생성된 스트링이다.
스트링 리터럴은 JVM안 리터럴 테이블에서 특별히 관리되며
스트링 생성에 대핸 실행시간을 줄이기 위하여
동일한 리터럴은 공유시키는 특징을 가진다.
객체 생성에 의해 생성된 스트링은 힙 메모리에 별도로 생성되며
공유되는 특성을 가지지는 않는다.
cf. char 배열을 매개변수로 String의 생성도 가능하다.
한번 만들어진 스트링은 수정이 불가능하다.
그래서 스트링이 공유되어도 아무 문제가 없는 것이다.
String 활용
concat(str) : 해당 문자열의 끝에 str을 덧붙인 문자열을 가리키게 한다.
compareTo(str) : 두개의 스트링을 사전 순서로 비교하여
같으면 0, 현재 스트링이 먼저나오면 음수, 나중에 나오면 양수를 리턴
trim() : 문자열의 앞 뒤 공백문자( 스페이스, \t, \n .. ) 제거
** 사이 공백들은 제거 되지 않는다 **
length() : 문자열의 길이
contains(str) : 해당 문자열 포함 여부
replace(str1, str2) : str1부분을 str2로 치환
split(char) : 해당 구분자로 분리하여 배열 형태로 리턴
substring(index) : 인덱스 ~ 끝까지의 스트링 리턴
charAt(index) : 해당 위치의 문자 리턴
StringBuffer 클래스
문자의 개수에 따라 자동 조절되는 내부의 가변크기의 버퍼를 가지고
스트링을 다루는 클래스, 생성된 스트링의 수정이 가능하다.
스트링이 길거나 스트링 작업이 많을 경우 StringBuffer 이용이 적합하다.
append -> concat과 동일
insert(index, str) : 영어뜻
replace(start, end, str)
시작 인덱스 위치부터 끝 인덱스 위치 전까지의 문자열을 str로 교체
System.out.println으로 아무렇지 않게 출력이 가능하다.
StringTokenizer 클래스
문자열을 분리하는데 특화된 클래스
new StringTokenizer(str, 구분문자); 로 객체를 만들고
nextToken() 메소드를 통해 하나씩 토큰을 얻어낸다.
countToken() 메소드를 통해 몇개의 토큰으로 분리되었는지 알 수 도 있다.
hasMoreTokens() 메소드는
순차적으로 토큰을 얻는 코드를 짤때 유용하게 사용 가능하다.
( + ) java.util 클래스에 소속되어 있다.
6. Math 클래스
모든 메소드가 static 타입이기때문에 Math.메소드 형태로 사용이 가능하다.
Math.random()
0~0.99 까지의 실수 값을 리턴한다.
그렇기에 100을 곱하여 1을 더하면 1~100까지가 된다.
실수 값이기 때문에 int로 캐스팅을 해준다.
(int)(Math.random()*100 + 1)
** java.util.Random 은 기본적으로 정수 범위 안에 난수를 발생시키며,
매개변수를 줄 시 0 ~ n-1 범위의 정수 난수를 발생시킨다.
cf. sqrt -> root, exp -> e^n, round -> 반올림
'프로그래밍 > Java' 카테고리의 다른 글
자바 프로그래밍 _ 이병대교수 _ 0차시 _ 이클립스 (0) | 2018.03.09 |
---|---|
8장정리_자바GUI_Swing (0) | 2017.12.19 |
7장정리_컬렉션과제네릭 (0) | 2017.12.19 |
12장정리_자바스레드 (0) | 2017.12.19 |
5장정리_OOP (0) | 2017.12.19 |