제 11 장 java.lang 패키지 제 12 장 문자열 제 13 장 유틸리티 제 14 장 입출력 제 15 장 네트워킹 제 3 부 자바 클래스 라이브러리 제 11 장 java.lang 패키지 제 12 장 문자열 제 13 장 유틸리티 제 14 장 입출력 제 15 장 네트워킹
11장 java.lang 패키지 11.1 java.lang 패키지의 개요 11.2 Object 클래스 11.3 포장(Wrapper) 클래스 11.4 System 클래스 11.5 Class 클래스 11.6 Math 클래스
11.1 java.lang 패키지의 개요 모든 자바 프로그램에 자동으로 포함되는 패키지 Boolean Character Class ClassLoader Compiler Byte Math Double Number Float Process Integer Object Runtime Long SecurityManager Short String StringBuffer System Thread ThreadGroup Throwable void java.lang 패키지 주요 클래스의 계층구조
11.2 Object 클래스 모든 자바 프로그램의 최상위 클래스 모든 자바 프로그램에 상속된다. extends 예약어를 사용하여 명시적으로 지정하지 않아도 상속된다 모든 자바 프로그램에서 Object 클래스의 메소드를 자유롭게 사용
Object 클래스 Object 클래스의 주요 메소드 Ojbect clone() 객체를 복제하기 위해 사용하는 메소드 boolean equals(Object object) 두 개의 객체가 같은 지를 비교하여 같으면 true, 아니면 false를 반환 void finalize() 자바에서는 객체가 더 이상 사용되지 않으면 자동적으로 쓰레 기 수집(garbage collection)기능을 수행한다. finalize() 메소드는 쓰레기 수집 기능이 수행되기 전에 호출되며 객체가 점유하고 있던 자원들을 해제하는데 사용되는 메소드 Class getClass() 객체의 클래스명을 Class 형의 객체로 반환 int hashCode() 호출한 객체와 연관된 hash 코드를 얻는다. String toString() 현재 객체의 문자열 표현을 반환한다 void notify() 대기중인 스레드 중 하나의 스래드를 다시 시작시킨다 void notifyAll() 대기중인 모든 스레드를 다시 시작시킨다 void wait() 실행을 중지하고 대기 상태로 간다
11.3 포장(Wrapper) 클래스 자바에서는 실행의 효율성을 위해 기본자료형(8가지)을 값으로 직접 사용할 수 있다 또한 8가지의 기본 자료형을 객체로 사용할 수 있는 클래스를 제공 8개의 기본 자료형과 괄련된 클래스를 포장(wrapper) 클래스라 한다 기본 자료형을 객체로 사용하면 해당 클래스에서 제공되는 유용한 메소드들을 사용할 수 있다.(효율성은 값을 사용하는 방법보다 뒤진다) 포장 클래스 Boolean, Character, Byte, Short, Integer, Long, Float, Double 포장 클래스로부터 생성된 기본 자료형 객체의 값은 한번 생성된 다음에는 변할 수 없다
포장(Wrapper) 클래스 포장 클래스를 사용하는 예 class ValueandWrapper { public static void main(String args[]) { int num1 = 20; // 정수 num1(값사용)을 생성 Integer num2 = new Integer(30); // Integer 포장 클래스를 이용하여 정수 객체 num2를 생 int total = num1 + num2.intValue(); System.out.println("두수의 합은 : " + total); }
포장(Wrapper) 클래스 - (1) Integer 클래스 정수값을 포장하는 클래스 생성자 Integer(int n) Integer(String str) n : 정수형 값 str : 문자열(문자열과 동등한 정수값을 생성)
포장(Wrapper) 클래스 - (1) Integer 클래스 byte byteValue() 현 객체의 값을 byte 값으로 변환하여 반환 double doubleValue() 현 객체의 값을 double 값으로 변환하여 반환 float floatValue() 현 객체의 값을 float 값으로 변환하여 반환 int intValue() 현 객체의 값을 int 값으로 변환하여 반환 long longValue() 현 객체의 값을 long 값으로 변환하여 반환 short shortValue() 현 객체의 값을 short 값으로 변환하여 반환 String toString() 현 객체의 값을 문자열로 변환하여 반환 boolean equals(Object IntegerObj) 현 객체와 IntegerObj로 지정된 객체의 값이 같으면 true, 다르면 false를 반환 static Integer decode(String str) 문자열 str에 해당하는 Integer 객체를 반환 throws NumberFormatException static int parseInt(String str) 문자열 str에 해당하는 int 값을 반환 static int parseInt(String str, int radix) 문자열 str에 해당하는 int 값을 radix로 지정된 throws NumberFormatException 진법으로 반환
포장(Wrapper) 클래스 - (1) Integer 클래스 static String toBinaryString(int num) num으로 지정된 정수값의 2진법 표현을 가지는 String 객체를 반환 static String toHexString(int num) num으로 지정된 정수값의 16진법 표현을 static String toOctalString(int num) num으로 지정된 정수값의 8진법 표현을 static Integer valueOf(String str) 문자열 str에 해당하는 Integer 객체를 반환 throws NumberFormatException static Integer valueOf(String str, int radix) 문자열 str에 해당하는 Integer 객체를 radix로 throws NumberFormatException 지정된 진법으로 반환
포장(Wrapper) 클래스 - (1) Integer 클래스 예 class IntegerExam1 { public static void main(String args[]) { Integer num1 = new Integer(13); Integer num2 = new Integer(25); int hap = num1.intValue() + num2.intValue(); System.out.println("num1이 포장하고 있는 정수는 : " + num1.intValue()); System.out.println("num2가 포장하고 있는 정수는 : " + num2.intValue()); System.out.println("두수의 합 = " + hap); System.out.println("합의 2진 표현 : " + Integer.toBinaryString(hap)); System.out.println("합의 8진 표현 : " + Integer.toOctalString(hap)); System.out.println("if(num1 == num2) 는 : " + num1.equals(num2)); Integer num3 = new Integer("444"); // 문자열을 이용하여 정수형 객체 생성 System.out.println("문자열 '444'의 값은 : " + num3.intValue()); } 출력결과 교재 참조
포장(Wrapper) 클래스 - (2) Boolean클래스 True 또는 False 값을 포장하는 클래스 생성자 Boolean(boolean b) Boolean(String s) b : boolean 형의 값 s : boolean 형의 값과 같은 의미의 문자열(“true”, “false” 등)
포장(Wrapper) 클래스 - (2) Boolean클래스 boolean booleanValue() 현 객체의 값을 boolean 값으로 변환하여 반환 boolean equals(Object boolObj) 현 객체와 boolObj로 지정된 객체의 값이 같으면 true, 다르면 false를 반환 String toString() 현 객체의 값을 문자열로 반환 static boolean getBoolean(String str) 문자열 str로 지정된(예 : true 또는 false) 값을 boolean 값으로 반환 static Boolean valueOf(String str) 문자열 str로 지정된 값을 Boolean 객체로
포장(Wrapper) 클래스 - (3) Character 클래스 문자값을 포장하는 클래스 생성자 Character (char c) c : char 형의 값
포장(Wrapper) 클래스 - (3) Character 클래스 static boolean isDefined(char ch) ch가 Unicode이면 true 아니면 false를 반환 static boolean isDigit(char ch) ch가 숫자이면 true 아니면 false를 반환 static boolean isLetter(char ch) ch가 문자이면 true 아니면 false를 반환 static boolean isLetterOrDigit(char ch) ch가 문자 또는 숫자이면 true 아니면 false를 반환 static boolean isLowerCase(char ch) ch가 소문자이면 true 아니면 false를 반환 static boolean isSpace(char ch) ch가 공백문자이면 true 아니면 false를 반환 static boolean isUpperCase(char ch) ch가 대문자이면 true 아니면 false를 반환 static char toLowerCase(char ch) ch로 지정된 문자를 소문자로 변환하여 반환 static char toUpperCase(char ch) ch로 지정된 문자를 대문자로 변환하여 반환
포장(Wrapper) 클래스 - (3) Character 클래스 예 class CharacterExam1 { public static void main(String args[]) { char a[] = {'a', 'b', ' ', '?', 'C', '5', 'A’}; for(int i=0; i<a.length; i++) { System.out.println("a[" + i + "] 번째 요소 = " + a[i]); //결과가 true인 것만 화면에 출력결과가 나타난다. if(Character.isDigit(a[i])) System.out.println(" 숫자입니다."); if(Character.isLetter(a[i])) System.out.println(" 문자입니다."); if(Character.isSpace(a[i])) System.out.println(" 공백문자입니다."); if(Character.isUpperCase(a[i])) System.out.println(" 대문자입니다."); if(Character.isLowerCase(a[i])) System.out.println(" 소문자입니다."); } 출력결과 교재 참조
포장(Wrapper) 클래스 - (4) Byte 클래스 생성자 Byte(byte b) Byte(String s) throws NumberFormatException b : byte형 값 s : byte 형의 값과 같은 의미의 문자열. S가 byte 형의 문자열이 아닐 경우 NumberFormatException 예외 발생
포장(Wrapper) 클래스 - (4) Byte 클래스 byte byteValue() 현 객체의 값을 byte 값으로 변환하여 반환 double doubleValue() 현 객체의 값을 double 값으로 변환하여 반환 float floatValue() 현 객체의 값을 float 값으로 변환하여 반환 int intValue() 현 객체의 값을 int 값으로 변환하여 반환 long longValue() 현 객체의 값을 long 값으로 변환하여 반환 short shortValue() 현 객체의 값을 short 값으로 변환하여 반환 String toString() 현 객체의 값을 문자열로 변환하여 반환 boolean equals(Object BytesObj) 현 객체가 가지고 있는 값과 BytesObj로 지정된 객체가 가지고 있는 값이 같으면 true, 다르면 false를 반환 static Byte decode(String str) str로 지정된 문자열에 해당하는 Byte 객체를 throws NumberFormatFxception 반환 static byte parseByte(String str) str로 지정된 문자열에 해당하는 byte 값을 반환 throws NumberFormatException static byte parseByte(String str, int radix) str로 지정된 문자열에 해당하는 byte 값을 throws NumberFormatException radix로 지정된 진법으로 반환
포장(Wrapper) 클래스 - (5) Short 클래스 생성자 Short(short s) Short(String str) throws NumberFormatException s : short형 값 str : short 형의 값과 같은 의미의 문자열
포장(Wrapper) 클래스 - (5) Short 클래스 byte byteValue() 현 객체의 값을 byte 값으로 변환하여 반환 double doubleValue() 현 객체의 값을 double 값으로 변환하여 반환 short longValue() 현 객체의 값을 long 값으로 변환하여 반환 float floatValue() 현 객체의 값을 float 값으로 변환하여 반환 int intValue() 현 객체의 값을 int 값으로 변환하여 반환 short shortValue() 현 객체의 값을 short 값으로 변환하여 반환 String toString() 현 객체의 값을 문자열로 변환하여 반환 boolean equals(Object ShortObj) 현 객체가 가지고 있는 값과 ShortObj로 지정된 객체가 가지고 있는 값이 같으면 true, 다르면 false를 반환 static Short decode(String str) str로 지정된 문자열에 해당하는 Short 객체를 throws NumberFormatException 반환 static short parseShort(String str) str로 지정된 문자열에 해당하는 short 값을 throws NumberFormatException 반환 static short parseShort(String str, int radix) str로 지정된 문자열에 해당하는 short 값을 throws NumberFormatException radix로 지정된 진법으로 반환 static Short valueOf(String str) str로 지정된 문자열에 해당하는 Short 객체를
포장(Wrapper) 클래스 - (5) Short 클래스 예 class ShortExam { public static void main(String args[]) { Short s1 = new Short((short)100); short s2 = Short.parseShort("20"); // 문자열로부터 short 형의 값을 생성 int total = s1.intValue() + s2; // Short 객체 s1이 가지고 있는 정수값과 // short 형 변수 s2가 가지고 있는 값을 덧셈 System.out.println("덧셈의 결과 : " + total); String mun = "자바의 강력한 기능을 " + s1.toString() + "% 배우자"; System.out.println(mun); } 출력결과 교재 참조
포장(Wrapper) 클래스 - (6) Long 클래스 생성자 Long(long l) Long(String str) throws NumberFormatException l : long 형의 값 str : long 형의 값과 같은 의미의 문자열 Long 클래스의 메소드 : 표 11-7 참조
포장(Wrapper) 클래스 - (6) Long 클래스 byte byteValue() 현 객체의 값을 byte 값으로 변환하여 반환 double doubleValue() 현 객체의 값을 double 값으로 변환하여 반환 float floatValue() 현 객체의 값을 float 값으로 변환하여 반환 short shortValue() 현 객체의 값을 short 값으로 변환하여 반환 int intValue() 현 객체의 값을 int 값으로 변환하여 반환 long longValue() 현 객체의 값을 long 값으로 변환하여 반환 String toString() 현 객체의 값을 문자열로 반환 boolean equals(Object LongObj) 현 객체가 가지고 있는 값과 LongObj로 지정된 객체가 가지고 있는 값이 같으면 true, 다르면 false를 반환 static long parseLong(String str) str로 지정된 문자열에 해당하는 long 값을 반환 throws NumberFormatException static long parseLong(String str, int radix) str로 지정된 문자열에 해당하는 long 값을 throws NumberFormatException radix로 지정된 진법으로 반환 static String toBinaryString(long num) num의 2진 표현을 문자열로 반환 static String toHexString(long num) num의 16진 표현을 문자열로 반환 static String toOctalString(long num) num의 8진 표현을 문자열로 반환 static Long valueOf(String str) str로 지정된 값을 가지는 Long 객체를 반환
포장(Wrapper) 클래스 - (6) Long 클래스 예 class LongExam { public static void main(String args[]) { Long a = new Long(100); // Long 객체 a 생성 String st1 = Long.toBinaryString(a.longValue()); // Long 객체 a로부터 long 값을 추출하여 2진 문자열로 변환 System.out.println("long 값 100을 이진수로 변환 : " + st1); String st2 = Long.toHexString(a.longValue()); // toHexString() 메소드가 static으로 선언된 클래스 메소드이므로 클래스 이름 // 을 직접 사용하여 접근 System.out.println("long 값 100을 16진수로 변환 : " + st2); String st3 = Long.toOctalString(a.longValue()); System.out.println("long 값 100을 8진수로 변환 : " + st3); } 출력결과 교재 참조
포장(Wrapper) 클래스 - (7) Float 클래스 생성자 Float(float f) Float(double d) Float(String str) throws NumberFormatException f,d : float, double 형의 값 str : float 형의 값과 같은 의미의 문자열 Float 클래스의 메소드 : 표 11-8 참조
포장(Wrapper) 클래스 - (7) Float 클래스 byte byteValue() 현 객체의 값을 byte 값으로 변환하여 반환 double doubleValue() 현 객체의 값을 double 값으로 변환하여 반환 long longValue() 현 객체의 값을 long 값으로 변환하여 반환 short shortValue() 현 객체의 값을 short 값으로 변환하여 반환 float floatValue() 현 객체의 값을 float 값으로 변환하여 반환 int intValue() 현 객체의 값을 int 값으로 변환하여 반환 String toString() 현 객체의 값을 문자열로 변환하여 반환 boolean equals(Object FloatObj) 현 객체가 가지고 있는 값과 FloatObj로 지정된 객체가 가지고 있는 값이 같으면 true, 다르면 false를 반환 boolean isNaN() 현 객체가 가지고 있는 값이 NaN이면 true, 아니면 static boolean isNaN(float num) num이 NaN이면 true, 아니면 false를 반환 boolean isInfinite() 현 객체가 가지고 있는 값이 NEGATIVE_INFINITY 또는 POSITIVE_INFINITY이면 true, 아니면 false를 반환 static boolean isInfinite(float num) num이 NEGATIVE_INFINITY 또는 POSITIVE_INFINITY이면 true, 아니면 static Float valueOf(String str) str로 지정된 값을 가지는 Float 객체를 반환 throws NumberFormatException
포장(Wrapper) 클래스 - (8) Double 클래스 생성자 Double(double d) Double(String str) throws NumberFormatException d : double 형의 값 str : double 형의 값과 같은 의미의 문자열 Double 클래스의 메소드 : 표 11-9 참조
포장(Wrapper) 클래스 - (8) Double 클래스 byte byteValue() 현 객체의 값을 byte 값으로 변환하여 반환 double doubleValue() 현 객체의 값을 double 값으로 변환하여 반환 float floatValue() 현 객체의 값을 float 값으로 변환하여 반환 int intValue() 현 객체의 값을 int 값으로 변환하여 반환 short shortValue() 현 객체의 값을 short 값으로 변환하여 반환 long longValue() 현 객체의 값을 long 값으로 변환하여 반환 String toString() 현 객체의 값을 문자열로 반환 boolean equals(Object DoubleObj) 현 객체가 가지고 있는 값과 DoubleObj로 지정된 객체가 가지고 있는 값이 같으면 true, 다르면 false를 반환 boolean isNaN() 현 객체가 가지고 있는 값이 NaN이면 true, 아니면 false를 반환 static boolean isNaN(double num) num이 NaN이면 true, 아니면 false를 반환 boolean isInfinite()현 객체가 가지고 있는 값이 NEGATIVE_INFINITY 또는 POSITIVE_INFINITY이면 true, 아니면 static boolean isInfinite(double num) num이 NEGATIVE_INFINITY 또는 ststic Double valueOf(String str) str로 지정된 값을 가지는 Double 객체를 반환 throws NumberFormatException
포장(Wrapper) 클래스 - Float 클래스와 Double 클래스 isInfinite() : 객체의 값이 무한대의 작은 값이나 큰 값을 가질 때 true를 반환하는 메소드 isNaN() : 객체가 숫자가 아니면(Not a Number) true를 반환하는 메소드 class InfNaN { public static void main(String args[]) { Double d1 = new Double(0/0.); System.out.println("0/0. : "+ d1 + ": " + d1.isInfinite() + ", " + d1.isNaN()); } 출력결과 0/0. : NaN: false, true
포장(Wrapper) 클래스 - (7) Float 클래스 예 class FloatExam { public static void main(String args[]) { Float number = new Float(10.0); System.out.println("현 객체의 값 = " + number); System.out.println("byte값으로 변환 = " + number.byteValue()); System.out.println("long값으로 변환 = " + number.longValue()); System.out.println("short값으로 변환 = " + number.shortValue()); System.out.println("int값으로 변환 = " + number.intValue()); System.out.println("double값으로 반환 =” +(number.doubleValue())); System.out.println("if NaN : " + number.isNaN()); System.out.println("if isInfinite : " + number.isInfinite()); } 출력결과 교재 참조
포장(Wrapper) 클래스 - (8)Double 클래스 예 class DoubleExam { public static void main(String args[]) { double number1 = 0; double number2 = 0; double number3 = number1/number2; System.out.println("double형의 나눗셈결과 : " + number3); System.out.println("number3의 값의 양수/음수 구분하여 true/false를 반환 : " + Double.isInfinite(number3)); System.out.println("nember3이 NaN에 따라 true/false를 반환 " + Double.isNaN(number3)); System.out.println("Double의 최대값 : " + Double.MAX_VALUE); System.out.println("Double의 최소값 : " + Double.MIN_VALUE); } 출력결과 교재 참조
11.4 System 클래스 System 클래스는 실행시간 환경과 관련된 속성과 메소드 제공 System 클래스의 클래스 변수 in과 out은 입출력 패키지의 InputStream 클래스와 PrintStream 클래스의 객체를 지정 예 : System.out.println() 클래스 이름 System 클래스의 클래스 변수 (PrintStream 객체를 지정) PrintStream 클래스의 메소드
System 클래스 System 클래스 제공 메소드 static void arraycopy(Object source, 배열을 복사한다. source와 target int sourceStart, Object target, 은 복사될 배열의 이름이고, int targetStart, int size) sourceStart와 targetStart는 복사가 시작될 위치이고, size는 복사될 배열의 크기이다 static long currentTimeMillis() 1970년 1월 1일 자정부터 현재까 지의 시간을 밀리초로 반환 static void exit(int exitcode) 현재 수행중인 응용 프로그램을 끝낸다. exitcode에 따라 메시지를 나타낼 수 있다. exitcode를 0으로 지정하면 일반적인 종료를 의미 static void gc() 쓰레기 수집(garbage collection)을 시작시킨다
System 클래스 예 출력결과 교재 참조 class SystemExam { public static void main(String args[]) { long start, end; start = System.currentTimeMillis(); //1970년 1월 1일부터 현재까지의 시간을 밀리초로 반환 System.out.println("현재 시간 : " + start); System.out.println("500,000회의 Loop를 반복 시작” ); for(int i=0; i < 500000; i++) ; System.out.println("500,000회의 Loop를 반복 종료”); end = System.currentTimeMillis(); System.out.println("반복 종료 시간 : " + end); System.out.println("반복에 소요된 시간 : " + ( end -start )); } 출력결과 교재 참조
11.5 Class 클래스 객체나 인터페이스의 실행상태를 저장할 수 있는 클래스 주요 메소드 String getName() 클래스의 이름을 반환 Class getSuperclass() 상위 클래스의 이름을 반환 static Class forName(String name) name으로 지정된 문자열에 해 throws ClassNotFoundException 당하는 Class 객체를 반환
Class 클래스 - 예 출력결과 교재 참조
11.6 Math 클래스 수학과 관련된 많은 기능을 제공하는 클래스 메소드 static int abs(int arg) arg의 절대값(absolute value)을 int로 반환 static long abs(long arg) arg의 절대값을 long으로 반환 static float abs(float arg) arg의 절대값을 float로 반환 static double abs(double arg) arg의 절대값을 double로 반환 static double ceil(double arg) arg보다 크거나 같은 가장 작은 정수를 반환 static double floor(double arg) arg보다 작거나 같은 가장 큰 정수를 반환 static int max(int x, int y) x,y 값 중 큰 값을 int로 반환 static long max(long x, long y) x,y 값 중 큰 값을 long으로 반환 static float max(float x, float y) x,y 값 중 큰 값을 float로 반환 static double max(double x, double y) x,y 값 중 큰 값을 double로 반환 static int min(int x, int y) x,y 값 중 작은 값을 int로 반환 static long min(long x, long y) x,y 값 중 작은 값을 long으로 반환 static float min(float x, float y) x,y 값 중 작은 값을 float로 반환 static double min(double x, doube y) x,y 값 중 작은 값을 double로 반환 static double rint(double arg) arg에 가장 가까운 정수를 반환
Math 클래스 - 예 class MathExam { public static void main(String args[]) { System.out.println("10 절대값 : " + Math.abs(10)); System.out.println("10.0의 절대값 : " + Math.abs(10L)); System.out.println("20.0f의 절대값 : " + Math.abs(20.0f)); System.out.println("20.0d의 절대값 : " + Math.abs(20.0d)); System.out.println("큰 값을 반환합니다. : " + Math.max(30, 60)); System.out.println("작은 값을 반환합니다. : " + Math.min(10.0, 20.0)); } 출력결과 교재 참조