Lecture 7: Package
패키지의선언 패키지의사용 JAR 파일 자바의언어패키지 2
연관된클래스나인터페이스를하나의단위로묶는방법 장점 여러개의클래스와인터페이스를하나의그룹으로다루는수단을제공 클래스이름사이의충돌문제를해결 패키지의종류 기본패키지 : java.lang, java.util, java.io, java.awt 사용자정의패키지 3
선언형태 package PackageName; 소스파일처음에선언 패키지이름은계층적인구조를가지며디렉토리구조에반드시대응 디렉토리구조 4
절대경로명사용 패키지와함께클래스이름을명시하여참조 dot notation 클래스이름간에충돌해결 MyTest.Prints.Print1 m1; MyTest.Prints.Print2 m2; 5
import 문사용 이미존재하는클래스를사용할경우 클래스의이름을명시하면, 클래스의단순명을사용하여참조가능 import packagename.classname ; import MyTest.Prints.*; 정적 import 문사용 클래스이름이나객체이름이없이정적멤버의이름만으로멤버접근가능 import static classname.staticmemberidentifier; 패키지내의모든클래스 6
JAR(Java ARchive) 파일이란? 여러파일들과디렉토리정보를하나의묶음으로다루기위한파일 효과적으로다수의파일을하나의파일처럼관리 / 배포하기위해사용 JAR 파일에있는클래스사용하기 컴파일러혹은가상기계에옵션을통하여사용 javac -classpath = <JAR 파일경로 >... java -classpath = <JAR 파일경로 >... 환경변수를통하여사용 SET CLASSPATH=<JAR 파일경로 > 여러개의 JAR 파일명시 : 구분자 ; 사용 7
JAR 파일다루기 jar 명령문사용형식 jar 명령어 <JAR 파일이름 > < 대상파일이름또는디렉토리이름 > 명령어목록 명령어 c x t u 설명대상파일과디렉토리를가진 JAR 파일을생성 (creation) 대상파일과디렉토리를 JAR 파일에서추출 (extraction) JAR 파일의내용을표시 (type) 지정한 JAR 파일의정보를업데이트 (update) 명령어뒤에추가명령어문자가올수있음 v : 세부실행과정을표준출력에표시 f : JAR 파일이름지정 e : main() 메소드를가진클래스이름지정 8
JAR 파일다루기 (cont.) MyTest 패키지를포함하는 JAR 파일만들기 MyTest 서브디렉토리로이동후아래명령문실행 C:\>jar cvf MyTest.jar. MyTest.jar 파일에있는모든파일추출하기 C:\>jar xvf MyTest.jar 특정파일만추출하고자하면, 추출하고자하는파일이름지정 9
실행가능한 JAR 파일 main() 메소드를포함하는클래스에대한정보를가진 JAR 파일실행가능한 JAR 파일만들기 1. JAR 파일생성 2. main() 메소드를가진클래스정보를 JAR 파일에추가 C:\>jar cvf AbsolutePath.jar AbsolutePath.class MyTest C:\>jar uvfe AbsolutePath.jar AbsolutePath 1 2 1 MyTest 패키지와 AbsolutePath 클래스파일을포함하는 AbsolutePath.jar 생성 2 main() 메소드를가진클래스정보를추가 C:\>java -jar AbsolutePath.jar 실행가능한 JAR 파일실행하기 10
java.lang 기본패키지중언어패키지를의미자바의기능을확장해주는기본적인클래스를제공 import 문을사용하지않아도자동적으로포함 포함된클래스의종류 Object 클래스랩퍼클래스 (wrapper class) Integer 클래스, Double 클래스, String, StringBuffer, System 11
클래스의계층구조 12
모든클래스들의슈퍼클래스 모든클래스는 Object 클래스의메소드상속 메소드 Object clone() : 객체를동일하게복사해주는기능 boolean equals(object obj) : 매개변수로받은객체와이메소드를호출한객체가같은가를비교 int hashcode() : 객체의해쉬코드값을계산 Class getclass() : 객체에해당하는 Class 객체를얻는데사용 String tostring() : 객체를스트링으로변환하는기능 wait(), notify() : 스레드의상태를제어 13
[ 예제 7.6 - ComplexClass.java] class Complex { private double ipart, rpart; Complex(double x, double y) { ipart = x; // image part rpart = y; // real part } public String tostring() { String form = "(" + ipart + "," + rpart + ")"; return form; } } public class ComplexClass { public static void main(string[] args) { Complex c = new Complex(1.0, 1.0); System.out.println("Implicit call = " + c); } } System.out.println("Explicit call = " + c.tostring()); System.out.println("Hash Value = " + c.hashcode()); 실행결과 : Implicit call = (1.0,1.0) Explicit call = (1.0,1.0) Hash Value = 2019114216 14
기본형에해당하는클래스 java.lang 패키지의클래스계층구조참조 int Integer char Character double Double 제공하는이유 각형에관련된상수와메소드들에대한홈 (home) 역할을담당 기본형을객체로다루어야하는경우랩퍼클래스를이용하여기본형에해당하는객체를생성 15
Number 클래스 추상클래스 (abstract class) Integer, Long, Float, Double 클래스들의슈퍼클래스형변환에관한메소드가포함 메소드 abstract int intvalue() : int형으로변환하는메소드 abstract long longvalue() : long형으로변환하는메소드 abstract float floatvalue() : float형으로변환하는메소드 abstract double doublevalue() : double형으로변환하는메소드 16
상수 public static final int MAX_VALUE = 2147483647 public static final int MIN_VALUE = -2147483648 메소드 static int parseint(string s) : 문자열로저장된숫자를 int 형으로바꾸는메소드 static int parseint(string s, int radix) : 문자열로저장된숫자를주어진진법의 int 형으로바꾸는메소드 static String tobinarystring(int i) : 2 진수형태의문자열로바꾸는메소드 static String tohexstring(int i) : 16 진수형태의문자열로바꾸는메소드 17
[ 예제 7.7] 테스트 static 메소드이니깐... Integer.parseInt(s); Integer.toBinaryString(i);... 18
예제프로그램 [ 예제 7.7 - IntegerClass.java] public class IntegerClass { public static void main(string[] args) { String s = "255"; int i = Integer.parseInt(s); System.out.println("Binary form of (" + i + ") = + Integer.toBinaryString(i)); System.out.println("Octal form of (" + i + ") = + Integer.toOctalString(i)); System.out.println("Hexa form of (" + i + ") = + Integer.toHexString(i)); s = "11111111"; i = Integer.parseInt(s, 2); System.out.println("value of i = " + i); } } 실행결과 : Binary form of (255) = 11111111 Octal form of (255) = 377 Hexa form of (255) = ff value of i = 255 19
상수 public static final double MAX_VALUE = 1.79769313486231570e+308 public static final double MIN_VALUE = 4.94065645841246544e-308 public static final double NaN = 0.0 / 0.0 public static final double NEGATIVE_INFINITY = -1.0 / 0.0 public static final double POSITIVE_INFINITY = 1.0 / 0.0 20
메소드 static long doubletolongbits(double value) : double 형으로표현되어있는비트를 long 형의비트패턴으로바꾸는메소드 static boolean isnan(double v) : 매개변수가 NaN 인지를검사하는메소드 static boolean isinfinite(double v) : 매개변수가무한대인지를검사하는메소드 static Double valueof(string s) : 스트링을 Double 형으로변환하는메소드 21
상수 public static final Boolean TRUE = new Boolean(true) public static final Boolean FALSE = new Boolean(false) 메소드 Boolean(boolean b) : 초기값으로 b를받아 boolean 객체를만드는생성자 Boolean(String s) : "true" 나 "false" 와같은스트링값을받아 Boolean 객체를만드는생성자 boolean booleanvalue() : 객체의 boolean 값을리턴 static boolean getboolean(string name) : 시스템속성의 boolean 값을리턴 static Boolean valueof(string s) : 스트링 s에해당하는 Boolean 값을리턴 22
상수 public static final int MAX_RADIX = 36 public static final char MAX_VALUE = \ffff public static final int MIN_RADIX = 2 public static final char MIN_VALUE = \0000 메소드 Character(char value) : value 값으로객체를초기화하는생성자 char charvalue() : char 형으로변환하는기능 static boolean isdigit(char ch) : 숫자인가를판별하는기능 static boolean isletter(char ch) : 문자인가를판별하는기능 static boolean isletterordigit(char ch) : 문자이거나숫자일때참을리턴 23
메소드 char charat(int index) : 스트링내의특정한위치에있는문자를리턴 int length() : 스트링의길이를리턴 String touppercase() : 스트링의문자들을대문자로변환 String tolowercase() : 스트링의문자들을소문자로변환 String trim() : 스트링의앞또는뒤에있는공백문자를삭제하는기능 String substring(int beginindex) : beginindex 에서지정한위치부터스트링의끝까지에해당하는서브스트링을만듦 24
문자열조작연산을제공 스트링의내용이자주변하는경우에효율적으로처리 메소드 StringBuffer append(type obj) : obj 를스트링으로바꾸어스트링에추가 StringBuffer insert(int offset, Type obj) : obj를스트링으로바꾸어지정된위치에삽입 Object boolean String char[] char int long float double 25
StringBuffer 클래스사용예제 [ 예제 7.10 - StringAndStringBuffer.java] public class StringAndStringBuffer { public static void main(string[] args) { String now = new java.util.date().tostring(); StringBuffer strbuf = new StringBuffer(now); strbuf.append(" : ").append(now.length()).append('.'); System.out.println(strbuf.toString()); System.out.println("Current Time: " + now.substring(11,19)); } } 실행결과 : Tue Dec 25 16:45:27 KST 2007 : 28. Current Time: 16:45:27 26
자바가상기계 (Java Virtual Machine) 와운영체제 (OS) 시스템에대한제어와보안을위한클래스 표준입력과표준출력을정의 필드 public static InputStream in : 표준입력장치로부터데이터를읽어들이는스트림 public static PrintStream out : 표준출력장치에데이터를출력하는스트림 public static PrintStream err : 에러메시지를출력하는데사용하는표준에러스트림 27