Week7(패키지)
package 키워드
자바에서 패키지란 서로 관련 있는 클래스나 인터페이스의 컴파일 된 클래스 파일 들을 한 곳에 묶어 둔 것이다.
예를 들어서 프로젝트 하나에 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 등)은 불가능하다
import 키워드
응용프로그램에서 다른 패키지에 있는 클래스를 사용하고자 한다면 패키지 명을 포함하는 경로명을 사용해야 한다
//메인에서 사용하고 싶은 Scanner를 이용하기 위해서 해당 패키지가 있는 경로를 적어준 모습이다
import java.util.Scanner;
//util 패키지에 있는 여러가지의 클래스를 한꺼번에 import시키기 위해서 작성한 모습이다
import util.*;
public class Main {
public static void main(String[] args) {
java.util.Scanner scanner = new java.util.Scanner(System.in);
System.out.println(Scanner.next());
}
}
이렇게 하게되면 컴파일러가 클래스 파일의 위치를 찾아서 가져다 주게 된다
ClassPath : 클래스를 찾기 위한 경로
자바환경에서 컴파일 시 바이트 코드로 변환되고, 런타임시 클래스 로더에 로딩하기 위해서 위치를 찾게 되는데 해당 파일의 위치를 찾는 기준이 클래스 패스이다
classpath을 지정하는 두 가지 방법
테스트를 위한 코드
public class Main {
public static void main(String[] args) {
System.out.println("HELLO WORLD");
}
}

방법1 : 클래스 경로를 나타내는 환경변수
환경변수의 이름을 CLASSPATH으로 해서 클래스패스의 위치를 넣어주면 jvm이 이것을 참조해서 클래스를 로드할 수 있게 된다
환경변수를 지정해두면 -classpath옵션을 사용하지 않아도 괜찮다 하지만 os가 변경되면 사라지는 점이 있다



방법2 : java -classpath 옵션
옵션의 맨 앞에는 ' . '이 있으며 이는 java 명령어가 실행되어 실행할 클래스를 찾을 때 현재 디렉토리를 우선적으로 찾도록 지시한다
그 뒤의 경로들은 ' : '을 기준으로 나누어서 찾게 된다 ( 윈도우에서는 ' ; ')
따로 실행시에만 -classpath옵션으로 사용가능

접근 지정자
필드나 메소드에 붙게되는 접근할 수 있는 수준이다.
public, protected, default, private이 존재한다
public은 클래스내부, 동일패키지, 하위클래스, 그 밖의 영역에서 사용가능
protected는 클래스내부, 동일패키지, 하위클래스에서 사용가능
default는 따로 지정해주지 않는 경우이고 클래스내부, 동일패키지에서 사용가능
private은 클래스 내부에서만 사용가능
참고
명품 JAVA PROGRAMMING - 황기태
Last updated
Was this helpful?