Week7(패키지)
Last updated
Was this helpful?
Last updated
Was this helpful?
자바에서 패키지란 서로 관련 있는 클래스나 인터페이스의 컴파일 된 클래스 파일 들을 한 곳에 묶어 둔 것이다.
예를 들어서 프로젝트 하나에 FileIO작업, Graphic작업, UI작업이 있다고 가정을 해보면 이러한 형식으로 나눠서 사용할 수 있다
jdk는 개발자에게 많은 클래스 파일들을 패키지 형태로 제공한다 => 이 패키지들은 rt.jar 압축 파일로 제공된다
자바에서 제공하는 기본 패키지 : 자바 API라고 부르며 jdk를 설치한 디렉토리 밑의 rt.jar파일에 담겨 있다
자주 사용되는 패키지
java.lang : 기본적인 클래스와 인터페이스를 제공하고, 자동으로 import 되어있다(import는 다음에서 설명)
Object클래스 : 모든 클래스에 강제로 상속되고, Object만이 아무 클래스도 상속받지 않는 유일한 클래스로 계층 구조 상 최상위 클래스이다
boolean equals(Object obj) : obj가 가리키는 객체와 현재 객체를 비교하여 같으면 true리턴
String toString() : 현 객체에 대한 문자열 표현을 리턴
String클래스 : 문자열을 나타낸다
char charAt(int index) : index 인덱스에 있는 문자열 리턴
int compareTo(String anotherString) : 두 스트링을 사전 순으로 비교하여 두 스트링이 같으면 0리턴
String concat(String str) : 현재 스트링 뒤에 str 스트링을 덧붙인 새로운 스트링 리턴
int length() : 스트링의 길이 리턴
String split(String regex) : 정규식에 일치하는 부분을 중심으로 스트링을 분리, 분리된 스트링들을 배열로 저장하여 리턴
String trim() : 스트링 앞뒤의 공백 문자들을 제거한 스트링을 리턴
Math클래스 : 기본적인 산술연산을 제공하며, 멤버 메소드는 static타입
java.util : 날짜, 시간, 벡터, 해쉬맴 등 다양한 유틸리티 클래스와 인터페이스를 제공
java.io : 키보드, 모니터, 파일 등의 입/출력 하는 클래스와 인터페이스를 제공
java.awt, javax.swing : GUI프로그래밍에 필요한 클래스와 인터페이스를 제공
패키지 생성시, 이름 주의사항
java : 자바 기본 패키지
javax : 자바 확장 패키지
org : 비영리단체(오픈소스)의 패키지
com : 영리단체(회사)의 패키지
패키지의 이름은 소문자
자바의 예약어(string, for, switch 등)은 불가능하다
응용프로그램에서 다른 패키지에 있는 클래스를 사용하고자 한다면 패키지 명을 포함하는 경로명을 사용해야 한다
이렇게 하게되면 컴파일러가 클래스 파일의 위치를 찾아서 가져다 주게 된다
자바환경에서 컴파일 시 바이트 코드로 변환되고, 런타임시 클래스 로더에 로딩하기 위해서 위치를 찾게 되는데 해당 파일의 위치를 찾는 기준이 클래스 패스이다
classpath을 지정하는 두 가지 방법
테스트를 위한 코드
방법1 : 클래스 경로를 나타내는 환경변수
환경변수의 이름을 CLASSPATH으로 해서 클래스패스의 위치를 넣어주면 jvm이 이것을 참조해서 클래스를 로드할 수 있게 된다
환경변수를 지정해두면 -classpath옵션을 사용하지 않아도 괜찮다 하지만 os가 변경되면 사라지는 점이 있다
방법2 : java -classpath 옵션
옵션의 맨 앞에는 ' . '이 있으며 이는 java 명령어가 실행되어 실행할 클래스를 찾을 때 현재 디렉토리를 우선적으로 찾도록 지시한다
그 뒤의 경로들은 ' : '을 기준으로 나누어서 찾게 된다 ( 윈도우에서는 ' ; ')
따로 실행시에만 -classpath옵션으로 사용가능
필드나 메소드에 붙게되는 접근할 수 있는 수준이다.
public, protected, default, private이 존재한다
public은 클래스내부, 동일패키지, 하위클래스, 그 밖의 영역에서 사용가능
protected는 클래스내부, 동일패키지, 하위클래스에서 사용가능
default는 따로 지정해주지 않는 경우이고 클래스내부, 동일패키지에서 사용가능
private은 클래스 내부에서만 사용가능
명품 JAVA PROGRAMMING - 황기태