Transcript
Page 1: 11 장 .  패키지와  주요 클래스

11장. 패키지와 주요 클래스

1

public class SumTest { public static void main(String a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두 수를 더하는 부분입니다 System.out.println(" 두수의 합은 " + sum + " 입니다 "); }}

JAVA

Page 2: 11 장 .  패키지와  주요 클래스

패키지의 개념과 사용방법을 학습한다 .

자바의 기본 패키지인 java.lang 패키지의 클래스를 학습한다 .

주요 포장 (Wrapper) 클래스를 학습한다 .

String 클래스와 StringBuffer 클래스의 메소드 사용방법을 학습한다 .

유틸리티 패키지의 Random, Arrays 클래스 사용 방법을 학습한다 .

학습목표

2

Page 3: 11 장 .  패키지와  주요 클래스

section 1 패키지 개요와 패키지의 사용

section 2 java.lang 패키지의 개요

section 3 Object 클래스

section 4 포장 (Wrapper) 클래스 - 4-1 Integer 클래스

- 4-2 Character 클래스

- 4-3 Byte 클래스

- 4-4 Short 클래스

- 4-5 Long 클래스

목차

3

Page 4: 11 장 .  패키지와  주요 클래스

section 5 문자열의 개요

section 6 String 클래스 - 6-1 문자열의 길이

- 6-2 문자열에서의 문자 추출

- 6-3 문자열 비교

- 6-4 문자열 탐색

- 6-5 문자열의 변환

section 7 StringBuffer 클래스

section 8 유틸리티 패키지 개요

section 9 Random 클래스

section 10 Arrays 클래스

목차

4

Page 5: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

1 패키지 개요와 패키지의 사용

5

패키지- 비슷한 종류의 클래스나 인터페이스들을 하나의 집단으로 묶어 놓은 것

Page 6: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

1 패키지 개요와 패키지의 사용

6

JDK 에서 제공되는 주요 패키지

패키지 이름 설명java.lang

프로그램에서 지정하지 않아도 묵시적으로 포함되는 패키지로서 ,  자바 프로그램의 기본적인 기능을 제공하는 패키지이다 .  자바 프로그램의 최상위 클래스인 java.lang.Object  클래스가 이 패키지에 포함되어 있다 .

java.util 자바 프로그래밍에 유용한 유틸리티 클래스를 포함하는 패키지이다 .

java.io 입출력 기능을 제공하는 패키지로서 스트림을 다양한 형태로 처리할 수 있는 기능을 제공한다 .

java.net 네트워킹과 관련된 기능을 제공하는 패키지로서 telnet, ftp, http 와 같은 프로토콜을 사용할 수 있는 클래스를 제공한다 .

java.awt 그래피컬 사용자 인터페이스 (GUI) 를 구축하기 위한 다양한 컴포넌트를 제공하는 패키지로서 사용자는 이 패키지를 이용하여 원하는 인터페이스를 구축할 수 있다 .

java.awt.event AWT  컴포넌트들의 이벤트를 제어하는 패키지이다 .

java.applet 웹 검색기에서 수행되는 애플릿 프로그램을 작성하기 위해 필요한 클래스를 제공하는 패키지

Page 7: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

1 패키지 개요와 패키지의 사용

7

패키지를 사용하는 가장 일반적인 방법- import 문을 사용

import java.util.Date; ...... Date date = new Date(); ......

java.util.Date  클래스만을 사용

import java.util.*; ....... Date date = new Date(); Random random = new Random(); Stack stack = new Stack(); Hashtable hashtable = new Hashtable(); ........... ............java.util  패키지

java.util  패키지의 모든 클래스를 사용

Page 8: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

2 java.lang 패키지의 개요

8

java.lang 패키지- “import” 문을 사용하여 포함시키지 않아도 자동적으로 포함되는 패키지

Page 9: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

2 java.lang 패키지의 개요

9

java.lang  패키지의 클래스

345 page

Page 10: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

3 Object 클래스

10

java.lang.Object 클래스- 이 패키지의 최상위 클래스이면서 모든 자바 프로그램의 최상위 클래스

Page 11: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

3 Object 클래스

11

java.lang.Object  클래스의 주요 메소드

메소드 설명Ojbect clone() 객체를 복제하기 위해 사용하는 메소드

boolean equals (Ob-ject object) 두 개의 객체가 같은지를 비교하여 같으면 true,  아니면 false 를 반환

void finalize()자바에서는 객체가 더 이상 사용되지 않으면 자동적으로 쓰레기 수집 (garbage collection)기능을 수행한다 . finalize()  메소드는 쓰레기 수집 기능이 수행되기 전에 호출되며 객체가 점유하고 있던 자원들을 해제하는데 사용되는 메소드

Class getClass() 객체의 클래스 명을 Class 형의 객체로 반환int hashCode() 호출한 객체와 연관된 hash  코드를 얻는다 .

String toString() 현재 객체의 문자열 표현을 반환한다 .

void notify() 대기 중인 스레드 중 하나의 스레드를 다시 시작시킨다 .

void notifyAll() 대기 중인 모든 스레드를 다시 시작시킨다 .

void wait() 스레드의 실행을 중지하고 대기 상태로 간다 .

Page 12: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

4 포장 (Wrapper) 클래스

12

기본 자료형을 객체로 사용한다는 의미- 기본 자료형과 관련된 클래스를 제공한다는 의미

포장 (wrapper) 클래스- 기본 자료형 객체를 지원하기 위해 , 각각의 자료형과 관련된 클래스들을 제공

class ValueandWrapper { public static void main(String args[]) { int num1 = 20; Integer num2 = new Integer(30) int total = num1 + num2.intValue(); System.out.println(" 두수의 합은 : " + total); }}IntegInteg

Integer num2 = 30; 의 형태로 사용 가능 Integer  클래스의 intValue()  메소드로 정수 값을 추출

Page 13: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

4-1 Integer 클래스4 포장 (Wrapper) 클래스

13

Integer 클래스- 정수 값을 포장하는 클래스

nteger(int n)nteger(String str)

형식

Page 14: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

4-1 Integer 클래스4 포장 (Wrapper) 클래스

14

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)  throws NumberFormatException 문자열 str 에 해당하는 Integer  객체를 반환static  int  parseInt(String  str) 

throws NumberFormatException 문자열 str 에 해당하는 int  값을 반환

Page 15: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

4-1 Integer 클래스4 포장 (Wrapper) 클래스

15

Integer  클래스의 주요 메소드

타입 설명static int parseInt(String str, int  radix) throws NumberFormatEx-

ception문자열 str 에 해당하는 int  값을 radix 로 지정된 진법으로 반환

static String toBinaryString(int num) num 으로 지정된 정수 값의 2 진법 표현을 가지는 String  객체를 반환

static String toHexString(int num) num 으로 지정된 정수 값의 16 진법 표현을 가지는 String  객체를 반환static String toOctalString(int num) num 으로 지정된 정수 값의 8 진법 표현을 가지는 String  객체를 반환static  Integer  valueOf(String  str)  throws NumberFormatException 문자열 str 에 해당하는 Integer  객체를 반환

static Integer valueOf(String str, int radix) throws NumberFormatExcep-

tion문자열 str 에 해당하는 Integer  객체를 radix 로 지정된 진법으로 반환

Page 16: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

4-1 Integer 클래스4 포장 (Wrapper) 클래스

16

실습예제

IntegerTest1.java01020304050607080910111213141516

public class IntegerTest1 { public static void main(String args[]) { Integer num1 = new Integer(13); Integer num2 = 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(" 합의 16 진 표현 : " + Integer.toHexString(hap));

Integer  객체 생성직접 값을 지정하여 객체 생성

두 객체가 가진값을 더한다

클래스 메소드 호출

Page 17: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

4-1 Integer 클래스4 포장 (Wrapper) 클래스

17

실습예제

IntegerTest1.java171819202122

System.out.println("if(num1 == num2) 는 : " + num1.equals(num2)); Integer num3 = new Integer("444"); System.out.println(" 문자열 '444' 의 값은 : " + num3.intValue()); }}

Page 18: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

4-1 Integer 클래스4 포장 (Wrapper) 클래스

18

프로그램 설명- 00 : new  연산자를 사용하지 않고 ,  직접 값을 지정하여 객체를 생성할 수 있다 .- 00 :  객체가 가진 값을 더하기 위해 intValue()  메소드를 이용하여 정수 값을 가져와

덧셈을수행하였다 .- 00~00 :  클래스 이름을 이용하여 클래스 메소드를 호출하였다 .  정수 값을 2 진수 , 8 진

수 , 16 진수로 나타내었다 .- 00 :  문자열을 이용하여 Integer  객체를 생성하였다 . Integer  클래스는 문자열로 Inte-

ger  객체를 생성하는 생성자를 제공하고 있다 .

Page 19: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

4-1 Integer 클래스4 포장 (Wrapper) 클래스

19

Page 20: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

4-2 Character 클래스4 포장 (Wrapper) 클래스

20

Character 클래스- char 형의 값을 저장

Character(char c)형식

Page 21: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

4-2 Character 클래스4 포장 (Wrapper) 클래스

21

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 로 지정된 문자를 대문자로 변환하여 반환

Page 22: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

4-2 Character 클래스4 포장 (Wrapper) 클래스

22

실습예제

CharacterTest1.java01020304050607080910111213141516

class CharacterTest1 { public static void main(String args[]) { char a[] = {'a', ' ', '?', 'C', '5', 'A'}; for(int i=0; i<a.length; i++) { System.out.println("a[" + i + "] 번째 요소 = " + a[i]); 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(" 소문자입니다 ."); }

각 문자를클래스메소드로검사

문자 배열을 선언

Page 23: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

4-2 Character 클래스4 포장 (Wrapper) 클래스

23

실습예제

프로그램 설명- 03 :  문자 배열을 선언하였다 .- 04~16 :  문자 배열의 각 문자를 Character  클래스의 클래스 메소드를 이용하여 검사하여

결과를 출력하였다 .- 17 :  문자 배열의 첫 번째 문자가 유니코드인지 검사하는 isDefined()  메소드를 수행하였

다 .

CharacterTest1.java17181920212223

if(Character.isDefned(a[0])) { System.out.println("a[0] 번째 요소 = " + a[0]); System.out.println(" 유니코드입니다 ."); } }}

유니코드인지 검사

Page 24: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

4-2 Character 클래스4 포장 (Wrapper) 클래스

24

Page 25: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

4-3 Byte 클래스4 포장 (Wrapper) 클래스

25

Byte 클래스- byte 형의 값을 저장

- MAX_VALUE 와 MIN_VALUE 상수를 제공

Byte(byte b)Byte(String s) throws NumberFormatException

형식

Page 26: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

4-3 Byte 클래스4 포장 (Wrapper) 클래스

26

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) throws NumberFormatException str 로 지정된 문자열에 해당하는 Byte  객체를 반환static byte parseByte(String str) throws NumberFormatException str 로 지정된 문자열에 해당하는 byte  값을 반환static byte parseByte(String str, int radix) throws NumberFormatException str 로 지정된 문자열에 해당하는 byte  값을 radix 로 지정된 진법으로 반환

Page 27: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

4-3 Byte 클래스4 포장 (Wrapper) 클래스

27

실습예제

ByteTest.java0102030405060708091011

public class ByteTest { public static void main(String args[]) { Byte b1 = new Byte("126"); byte b2 = Byte.parseByte("1"); byte btotal1 = (byte)(b1.byteValue() + b2); System.out.println("byte 덧셈의 결과 1 : " + btotal1); Byte b3 = 1; byte btotal2 = (byte)(b3.byteValue() + btotal1); System.out.println("byte 덧셈의 결과 2 : " + btotal2); }}

직접 숫자를 지정하여 Byte  객체 생성

byte 형 변수 초기화 ( 클래스 메소드 이용 ) 정수 (int)  연산 수행 후 (byte)  형변환

"126"  문자열로 Byte  객체 생성

Page 28: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

4-3 Byte 클래스4 포장 (Wrapper) 클래스

28

프로그램 설명- 03 : Byte  클래스의 객체를 문자열 값을 지정하여 생성하였다 .  이때 지정되는 문자열은

byte  값이 표현 가능한 범위의 문자열이어야 한다 . “128” 이나 “ kim” 과 같은 문자열로는 Byte  객체를 생성할 수 없다 .

- 04 : Byte  클래스의 클래스 메소드를 이용하여 byte 형의 변수를 초기화하였다 .  이 경우에도 문자열은 byte  값이 표현할 수 있는 범위 내에 있어야 한다 .

- 05 :  자바는 모든 연산을 int 형으로 수행한다 .  두 개의 피연산자가 모두 byte 형이라 자바는 int 형 덧셈을 수행하므로 ,  덧셈의 결과를 byte 형의 변수에 저장하기 위해서는 반드시 (byte) 로 형변환을 수행해야 한다 .

- 07 :  직접 숫자를 지정하여 Byte  객체를 생성할 수 있다 .- 09 :  출력문에서 -128 이 출력된 이유는 덧셈의 결과가 128 이 되어 8 번째 비트가 1 이

되었기 때문이다 . byte 형으로 출력되면 8 번째 비트가 1 일 경우 음수로 취급되어 -128 이 출력되게 된다 .

Page 29: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

4-3 Byte 클래스4 포장 (Wrapper) 클래스

29

Page 30: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

4-4 Short 클래스4 포장 (Wrapper) 클래스

30

Short 클래스- short 형의 값을 저장

- MAX_VALUE 와 MIN_VALUE 상수를 제공

Short(short s)Short(String str) throws NumberFormatException

형식

Page 31: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

4-4 Short 클래스4 포장 (Wrapper) 클래스

31

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)  throws NumberFormatException str 로 지정된 문자열에 해당하는 Short  객체를 반환static short parseShort(String str) throws NumberFormatException str 로 지정된 문자열에 해당하는 short  값을 반환static  short  parseShort(String  str,  int radix) throws NumberFormatException

str 로 지정된 문자열에 해당하는 short  값을 radix 로 지정된 진법으로 반환

Page 32: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

4-4 Short 클래스4 포장 (Wrapper) 클래스

32

실습예제

ShortTest.java0102030405060708

public class ShortTest { public static void main(String args[]) { Short s1 = new Short((short)30); short s2 = Short.parseShort("20"); short stotal = (short)(s1.intValue() + s2); System.out.println("short 덧셈의 결과 : " + stotal); }}

숫자를 short 형으로 형변환하여객체 생성

Page 33: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

4-4 Short 클래스4 포장 (Wrapper) 클래스

33

프로그램 설명- 03 : Short  클래스로부터 직접 숫자를 지정하여 객체를 생성하는 경우에는 숫자를 short

형으로 형변환해야 한다 .  자바에서 모든 수식의 계산은 int 형으로 수행한다 .

Page 34: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

4-5 Long 클래스4 포장 (Wrapper) 클래스

34

Long 클래스- long 형의 값을 저장

- MAX_VALUE 와 MIN_VALUE 상수를 제공

Long(long l)Long(String str) throws NumberFormatException

형식

Page 35: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

4-5 Long 클래스4 포장 (Wrapper) 클래스

35

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) throws NumberFormatException str 로 지정된 문자열에 해당하는 long  값을 반환static long parseLong(String str, int radix) throws NumberFormatException

str 로 지정된 문자열에 해당하는 long  값을 radix 로 지정된 진법으로 반환

static String toBinaryString(long num) num 의 2 진 표현을 문자열로 반환

Page 36: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

4-5 Long 클래스4 포장 (Wrapper) 클래스

36

Long  클래스의 주요 메소드

메소드 설명static String toHexString(long num) num 의 16 진 표현을 문자열로 반환static String toOctalString(long num) num 의 8 진 표현을 문자열로 반환static  Long  valueOf(String  str)  throws NumberFormatException str 로 지정된 값을 가지는 Long  객체를 반환

Page 37: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

4-5 Long 클래스4 포장 (Wrapper) 클래스

37

실습예제

LongTest.java01020304050607080910111213141516

public class LongTest { public static void main(String args[]) { Long a = new Long(Long.MAX_VALUE); System.out.println ("Long 의 최댓값 (10 진법 ) : " + a.longValue()); System.out.println ("Long 의 최댓값 (2 진법 ) : " + Long.toBinaryString(a.longValue())); System.out.println ("Long 의 최댓값 (8 진법 ) : " + Long.toOctalString(a.longValue())); System.out.println ("Long 의 최댓값 (16 진법 ) : " + Long.toHexString(a.longValue())); System.out.println ("=========================================="); a = new Long(Long.MIN_VALUE); System.out.println ("Long 의 최솟값 (10 진법 ) : " + a );

Long  최댓값 객체 생성long  최댓값 출력

Long  최솟값 객체 생성long  최솟값 출력

Page 38: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

4-5 Long 클래스4 포장 (Wrapper) 클래스

38

실습예제

프로그램 설명- 03 : Long  클래스에 제공되는 상수 MAX_VALUE 를 이용하여 객체를 생성하였다 . 64

비트로 표현 가능한 최댓값은 9223372036854775807 이다

- 04~11 :  최댓값을 2 진수 , 8 진수 , 16 진수로 나타내었다 .

LongTest.java1718192021222324

System.out.println ("Long 의 최솟값 (2 진법 ) : " + Long.toBinaryString(a)); System.out.println ("Long 의 최솟값 (8 진법 ) : " + Long.toOctalString(a)); System.out.println ("Long 의 최솟값 (16 진법 ) : " + Long.toHexString(a)); }}

Page 39: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

4-5 Long 클래스4 포장 (Wrapper) 클래스

39

Page 40: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

5 문자열의 개요

40

문자열 (String)- 자바 프로그램에서 많이 사용되는 요소

- 자바는 문자열을 객체로 취급

- 상수 문자열을 사용할 때 : String 클래스

- 계속 변하는 문자열을 사용할 때 : StringBuffer 클래스

Page 41: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

6 String 클래스

41

String 클래스- 변하지 않는 문자열

- 상수 문자열을 위해 사용

- 문자열을 생성하고 조작할 수 있도록 다양한 생성자와 메소드를 제공

String()String(char chars[])String(char chars[], int startindex, int numChars)String(String strObj)String(byte asciiChars[], byte highOrderByte)String(byte asciiChars[], byte highOrderByte, int startindex, int numChars)String(byte asciiChars[])String(byte asciiChars[], int startIndex, int numChars)

형식

Page 42: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

6 String 클래스

42

String  클래스의 주요 메소드

메소드 설명int length() 문자열의 길이를 반환char charAt(int I) i 번째 문자를 반환void getChars(int sourceStart, int sourceEnd, char target[], int targetStart) 문자열의 일부를 문자 배열 (target[]) 로 작성byte[] getBytes() 현재의 문자열을 바이트 배열로 반환boolean equals(Object str) 현재의 문자열과 str 로 지정된 문자열이 같으면 true,  다

르면 false 를 반환boolean equalsIgnoreCase(String str) 현재의 문자열과 str 로 지정된 문자열이 같으면 true,  다

르면 false 를 반환 .  단 ,  비교 시 대소문자를 무시boolean startsWith(String str) 현재의 문자열이 str 로 시작하면 true,  아니면 false 를 반환boolean endsWith(String str) 현재의 문자열이 str 로 끝나면 true,  아니면 false 를 반환int compareTo(String str) 두 개의 문자열을 비교하여 결과로 양수 ,  음수 , 0 의 값

을 반환int indexOf(char ch) 현재의 객체가 가지고 있는 문자열 내에서 ch 로 지정된

문자의 첫 번째 인덱스를 반환int indexOf(String str) 문자열 str 의 첫 번째 인덱스를 반환

Page 43: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

6 String 클래스

43

String  클래스의 주요 메소드

메소드 설명int indexOf(int ch, int startIndex) 인덱스 startIndex  이후의 문자 ch 의 첫 번째 인덱스를 반환int indexOf(String str, int startIndex) 인덱스 startIndex  이후의 문자열 str 의 첫 번째 인덱스 를 반환String intern() 문자열의 canonical  문자열을 반환int lastindexOf(char ch) 문자 ch 의 마지막 인덱스를 반환int lastindexOf(String str) 문자열 str 의 마지막 인덱스를 반환int lastindexOf(int ch, int startIndex) 인덱스 startIndex  이전의 문자 ch 의 마지막 인덱스를 반환int lastindexOf(String str, int startIndex) 인덱스 startIndex  이전의 문자열 str 의 마지막 인덱스를 반환String substring(int startindex) startIndex 로부터 시작하는 부분 문자열을 반환String substring(int startIndex, int endIndex) startIndex 와 endIndex  사이의 부분 문자열을 반환String concat(String str) 현재의 문자열에 str 로 지정된 문자열을 결합String replace(char original, char replacement) original 로 지정된 문자를 replacement 로 지정된 문자로 대치

Page 44: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

6 String 클래스

44

String  클래스의 주요 메소드

메소드 설명String trim() 문자열의 앞뒤 공백 (whitespace) 을 제거static String valueOf(double num) num 을 문자열로 변환하여 반환static String valueOf(long num) num 을 문자열로 변환하여 반환static String valueOf(Object obj) 객체가 가지고 있는 데이터를 문자열로 변환하여 반환static String valueOf(char chars[]) 문자 배열을 문자열로 변환하여 반환static String valueOf(char chars[], int startIndex, int numChars) 문자 배열의 일부를 문자열로 변환하여 반환String toLowerCase() 문자열을 모두 소문자로 변환하여 반환String toUpperCase() 문자열을 모두 대문자로 변환하여 반환

Page 45: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

6 String 클래스

45

실습예제

StringTest1.java0102030405060708091011121314

public class StringTest1 { public static void main(String args[]) { char a[] = { 'C','o','m','p','u','t','e','r' }; String s1 = new String(a); String s2 = new String(a,3,2); String s3 = new String(" 배우기 쉬운 자바 "); String s4 = "canonical 문자열 "; System.out.println(" 문자열 s1 : " + s1); System.out.println(" 문자열 s1 의 길이 : " + s1.length()); System.out.println(" 문자열 s2 : " + s2); System.out.println(" 문자열 s3 : " + s3); System.out.println(" 문자열 s4 : " + s4); }}

배열을 이용하여 객체 생성배열의 특정 부분을 이용하여 객체 생성문자열을 지정하여 객체 생성

문자열의 길이 출력

Page 46: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

6 String 클래스

46

프로그램 설명- 04 :  문자 배열을 이용하여 String  객체를 생성하였다 . - 05 :  문자 배열의 일부분을 이용하여 String  객체를 생성하였다 .- 07 :  문자열을 직접 지정하여 String  객체를 생성하였다 .  이러한 문자열을 canonical 

문자열이라고 한다 .- 09 : String  클래스의 length()  메소드를 이용하여 문자열의 길이를 출력하고 있다 .

Page 47: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

6 String 클래스

47

canonical 문자열- 자바는 편리한 문자열의 사용을 위해 단축 (shorthand) 초기화를 허용

- 단축 초기화 과정을 거쳐 생성된 문자열

String name = "kim"name = "park"

Page 48: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

6 String 클래스

48

실습예제StringTest2.java01020304050607080910111213141516171819

public class StringTest2 { public static void main(String args[]) { String s1 = "Java Korea"; String s2 = new String("Java Korea"); String s3 = s2.intern(); String s4 = "Java Korea"; String s5 = new String("Java Korea"); System.out.println("s1 과 s2 가 같은가 ? : " + (s1 == s2)); System.out.println("s2 와 s3 가 같은가 ? : " + (s2 == s3)); System.out.println("s1 과 s3 가 같은가 ? : " + (s1 == s3)); System.out.println("s1 과 s4 가 같은가 ? : " + (s1 == s4)); System.out.println("s2 와 s5 가 같은가 ? : " + (s2 == s5)); System.out.println("s1 : " + s1); System.out.println("s2 : " + s2); System.out.println("s3 : " + s3); System.out.println("s4 : " + s4); System.out.println("s5 : " + s5); }}

canonical  문자열 객체 생성일반 문자열 객체 생성

intern()  메소드를 이용하여 canonical  문자열 객체 생성

Page 49: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

6 String 클래스

49

프로그램 설명- 03 :  문자열을 직접 지정하여 canonical  문자열 객체를 생성하였다 . - 04 : new  문장을 사용하여 일반 문자열 객체를 생성하였다 .- 05 : String  클래스의 intern()  메소드를 사용하여 canonical  문자열 객체를 생성하였다 .- 10~11 : canonical  문자열을 저장하고 있는 객체 변수의 값 ( 주소 ) 이 같은가를

비교하였다 .  두 객체 변수는 같은 기억장소를 가리키고 있다 .- 12 :  같은 문자열을 가진 일반 객체가 같은가를 비교하였다 .  두 개의 객체는 서로 다른

객체로 생성되었기 때문에 false 를 출력한다 .

Page 50: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

6 String 클래스

50

Page 51: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

6-1 문자열의 길이6 String 클래스

51

문자열 길이 메소드

int length()형식

char chars[] = {'K', 'o', 'r', 'e', 'a'};String s = new String(chars);System.out.println(s.length());

Page 52: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

6-2 문자열에서의 문자 추출6 String 클래스

52

문자열 추출 메소드- charAt() 메소드 : 문자열의 특정 위치에 있는 문자를 반환

- getChars() 메소드 : 문자열의 일부를 문자 배열로 제공

char charAt(int i)void getChars(int sourceStart, int sourceEnd, char target[], int targetStart)

형식

Page 53: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

6-2 문자열에서의 문자 추출6 String 클래스

53

시습예제

StringExtract.java010203040506070809

public class StringExtract { public static void main(String args[]) { String a1 = "WorldCup Korea"; System.out.println(" 추출된 문자 : " + a1.charAt(2)); char buff[] = new char[3]; a1.getChars(5,8,buff,0); System.out.println(buff); }}

문자열의 2 번째 (0 부터 시작 )문자를 출력문자열의 5-7 번 문자를 출력

Page 54: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

6-2 문자열에서의 문자 추출6 String 클래스

54

프로그램 설명- 04 : charAt()  메소드는 문자열에서 특정 위치의 문자를 반환하는 메소드이다 . - 06 : getChars()  메소드는 문자열의 지정된 위치에 있는 다수 개의 문자를 문자 배열로

반환하는 메소드이다 . 

Page 55: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

6-3 문자열 비교6 String 클래스

55

문자열 비교 메소드- equals() 메소드 : 현재의 문자열과 str 로 지정된 문자열이 같으면 true, 다르면 false

를 반환

- equalsIgnoreCase() 메소드 : equals() 메소드와 같으나 대소문자를 구분하지 않고 비교

- compareTo() 메소드 : 두 개의 문자열을 비교하여 문자열이 다른 문자열보다 작으면 음수 값을 , 같으면 0 값을 , 크면 양수 값을 반환

- startsWith(), endsWith() 메소드 : str 로 지정된 문자열로 시작하거나 끝나면 true 를 그렇지 않으면 false 를 반환

boolean equals(Object str)boolean equalsIgnoreCase(String str)int compareTo(String str)boolean startsWith(String str)boolean endsWith(String str)

형식

Page 56: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

6-3 문자열 비교6 String 클래스

56

실습예제

EqualsTest.java010203040506070809101112131415

class EqualsTest { public static void main(String args[]) { String s1 = " 알기쉽다 " ; String s2 = "Apple"; String s3 = "APPLE"; String s4 = new String(" 알기쉽다 "); System.out.println ("s1 과 s2 가 동일한 문자열 ? : " + s1.equals(s2)); System.out.println ("s2 와 s3 가 동일한 문자열 ?( 대소문자 무시 ) : " + s2.equalsIgnoreCase(s3)); if (s1 == s4) System.out.println ("s1 과 s4 를 \"==\" 연산자로 비교한 결과는 같다 "); else

객체 변수가 가진 값 ( 주소 )  비교대소문자 무시 비교

equals()  메소드로 비교

Page 57: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

6-3 문자열 비교6 String 클래스

57

실습예제

EqualsTest.java161718192021222324252627282930

System.out.println ("s1 과 s4 를 \"==\" 연산자로 비교한 결과는 같지 않다 "); if (s1.equals(s4)) System.out.println ("s1 과 s4 를 \"equals()\" 메소드로 비교한 결과는 같다 "); else System.out.println ("s1 과 s4 를 \"equals()\" 메소드로 비교한 결과는 같지 않다 "); System.out.println ("s1 문자열은 \" 알기 \" 로 시작하는가 ? " + s1.startsWith(" 알기 ")); System.out.println ("s1 문자열은 \"ple\" 로 끝나는가 ? " + s2.endsWith("ple")); }}

객체 변수가 지정하는 문자열 비교

문자열 시작과 끝을 비교

Page 58: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

6-3 문자열 비교6 String 클래스

58

프로그램 설명- 07, 08 :  두 개의 문자열을 equals()  메소드로 비교한다 .  두 객체 변수가 가리키는

문자열의 내용을 비교하는 메소드이다 .- 09~11 :  문자열 비교 시 대소문자를 무시하고 비교한다 .- 12 : “==” 연산자를 사용하여 객체 변수를 비교하면 객체 변수가 가진 값을 비교한다 .  객체

변수는 객체가 저장된 주소를 가지므로 주소가 동일한지를 비교하게 된다 .- 18 : equals()  메소드는 객체 변수가 가리키는 객체의 내용이 같은지를 비교하는 메소드이

다 . - 24~28 : startsWith()  메소드와 endsWith()  메소드는 문자열이 특정 문자로 시작하고

끝나는가를 비교해서 이진값을 반환하는 메소드이다 .

Page 59: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

6-3 문자열 비교6 String 클래스

59

Page 60: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

6-3 문자열 비교6 String 클래스

60

실습예제

CompareTest.java0102030405060708091011121314151617

public class CompareTest { static String array1[] = {"IMF", " 제주도 ", " 자바도사 ", " 한글나라 ", "Computer", " 모카 ", "JAVA", " 인터넷탐색 ", " 초롱초롱 ", "come", " 바람 ", " 스크립터 ", " 군고구마 ", " 도서 ", "their", "country" }; public static void main(String args[]) { System.out.println("======= 정렬 전 데이터 =========="); for(int k = 0; k < array1.length; k++) System.out.print(array1[k] + " "); System.out.println(); System.out.println("======= 정렬 후 데이터 =========="); for(int i = 0; i < array1.length; i++) { for(int j = i + 1; j < array1.length; j++) { if(array1[i].compareTo(array1[j]) > 0) { String t = array1[i]; array1[i] = array1[j]; array1[j] = t;

문자열의 배열을 클래스 객체 변수로 선언

정렬 전 데이터를 출력

두 개의 문자열 비교두 개의 문자열 교환

Page 61: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

6-3 문자열 비교6 String 클래스

61

실습예제

CompareTest.java181920212223

} } System.out.print(array1[i] + " "); } }}

Page 62: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

6-3 문자열 비교6 String 클래스

62

프로그램 설명- 02 :  문자열의 배열을 클래스 객체 변수로 선언하였다 .  클래스 변수로 선언하는 이유는

이변수를 사용할 mail()  메소드가 클래스 메소드이기 때문이다 .  클래스 메소드에서 사용할 수 있는 외부 변수들은 반드시 클래스 변수이어야 한다 .

- 08, 09 :  반복문을 이용하여 정렬하기 전의 데이터들을 출력하였다 .- 09~10 :  두 개의 반복문을 이용하여 배열의 요소를 비교한다 .- 14 :  두 개의 요소를 비교하여 결과 값이 0 보다 크면 앞의 값이 더 크다는 의미이다 .  앞의

값이 더 크다는 의미는 알파벳 순으로 뒤에 있다는 의미이기 때문에 두 값을 교환한다 .  내포된 반복문을 1 번 반복하면 ,  배열의 가장 첫 번째 값은 가장 작은 값이 된다 .  계속해서 두 번째 값과 세 번째 값을 비교하여 다시 내포된 반복문이 한 번 더 수행되면 ,  배열의 두 번째 값은 배열에서 두 번째로 작은 값이 된다 .  이 부분이 반복 수행되면 모든 정렬이 완료된다 .

Page 63: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

6-3 문자열 비교6 String 클래스

63

Page 64: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

6-4 문자열 탐색6 String 클래스

64

문자열 탐색 메소드- indexOf() 메소드 : 문자열에서 특정 문자나 문자열을 탐색하여 위치를 반환하는 메소드

- lastindexOf() 메소드 : 문자열에서 특정 문자나 문자열을 마지막 위치부터 거꾸로 탐색하여 위치를 반환하는 메소드

int indexOf(String str)int indexOf(int ch, int startIndex)int indexOf(String str, int startIndex)int lastindexOf(String str)int lastindexOf(int ch, int startIndex)int lastindexOf(String str, int startIndex)

형식

Page 65: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

6-4 문자열 탐색6 String 클래스

65

실습예제

StringIndexTest.java010203040506070809101112

public class StringIndexTest { public static void main(String args[]) { String s = "1234567890JAVA1234567890java"; System.out.println(s); System.out.println (" 문자열의 길이 : " + s.length()); System.out.println ("indexOf(J) = " + s.indexOf('J')); System.out.println ("lastIndexOf(9) = " + s.lastIndexOf('9')); System.out.println ("indexOf(5, 5) = " + s.indexOf('5', 5));

‘J’  문자의 처음 위치‘9’  문자의 마지막 위치5 번째 이후 ‘ 5’  문자의 처음 위치

Page 66: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

6-4 문자열 탐색6 String 클래스

66

실습예제

StringIndexTest.java1314151617181920

System.out.println ("lastIndexOf(5, 18) = " + s.lastIndexOf('5', 17)); System.out.println ("indexOf(java, 10) = " + s.indexOf("java", 10)); System.out.println ("lastIndexOf(Java, 40) = " + s.lastIndexOf("Java", 23)); }}

17 번째 이전 ‘ 5’  문자의 위치10 번째 이후 “ java”  문자열의 위치23 번째 이전 “ Java”  문자열의 위치

Page 67: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

6-4 문자열 탐색6 String 클래스

67

프로그램 설명- 07~10 :  특정 문자를 이용하여 문자열을 탐색한다 .  특정 문자가 처음 나온 위치와 마지막

나온 위치를 반환한다 .- 11~14 :  문자열의 특정 위치를 지정하여 그 위치 다음 또는 그 위치 이전 부분으로 탐색한

다 .- 15~18 :  문자열에서 특정 문자열을 탐색한다 .

Page 68: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

6-5 문자열의 변환6 String 클래스

68

문자열 변환 메소드

형변환 메소드

String substring(int startIndex, int endIndex)String concat(String constr)String replace(char original, char replacement)String trim()

형식

static String valueOf(double num)static String valueOf(long num)static String valueOf(Object obj)static String valueOf(char chars[])static String valueOf(char chars[], int startIndex, int numChars)

형식

Page 69: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

6-5 문자열의 변환6 String 클래스

69

대소문자 변환 메소드

String toLowerCase()String toUpperCase()

형식

Page 70: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

6-5 문자열의 변환6 String 클래스

70

실습예제

SubStringTest.java01020304050607080910111213

public class SubStringTest { public static void main(String args[]) { String str = " 알기쉽게 해설한 자바 "; System.out.println(" 인덱스 5 부터 8 이전까지의 문자열 : " + str.substring(5,8)); System.out.println(str.concat(" 와 예제 프로그램 ")); System.out.println(str.replace(' 한 ',' 된 ')); str = " " + str + " "; System.out.println(" 공백 추가 str 의 길이 : " + str.length()); str = str.trim(); System.out.println(" 공백 제거 str 의 길이 : " + str.length()); }}

문자열 양쪽의 공백 제거

5 부터 8  이전까지의 문자열

특정 문자를 치환문자열 연결

Page 71: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

6-5 문자열의 변환6 String 클래스

71

프로그램 설명- 04, 05 :  위치를 지정하여 문자열의 부분 문자열을 구하는 메소드이다 . - 06 :  두 개의 문자열을 연결하는 메소드이다 .- 07 :  문자열에서 특정 문자를 다른 문자로 치환하는 메소드이다 .- 10 :  문자열 양쪽에 있는 공백 문자들을 제거하는 메소드이다 .

Page 72: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

6-5 문자열의 변환6 String 클래스

72

실습예제

ConvertStringTest.java01020304050607080910111213

public class ConvertStringTest { public static void main(String args[]) { int a = 2002 ; char b[] = {'W','o','r','l','d','c','u','p'}; System.out.println(String.valueOf(a) + " " + String.valueOf(b) + " in Korea"); String s1 = String.valueOf(b); System.out.println(String.valueOf(a) + " " + s1.toUpperCase() + " in Korea"); System.out.println(String.valueOf(a) + " " + String.valueOf(b).toUpperCase() + " in Korea"); }}

문자 배열을 문자열로 변환정수 2002 를 문자열로 변환

문자열을 대문자로 변환연결 메소드 사용

Page 73: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

6-5 문자열의 변환6 String 클래스

73

프로그램 설명- 00, 00 :  자바 프로그램에서는 “ .”  연산자를 이용하여 메소드를 연결하여 사용할 수 있다 . 

왼쪽부터 연산이 이루어지며 ,  왼쪽 연산의 결과를 가지고 오른쪽 연산을 수행한다 .  위와 같은 경우는 우선 String.valueOf(b) 의 결과를 구한다 .  그 결과가 String  클래스의 객체이므로 다시 String  클래스의 메소드를 적용할 수 있다 . 07~09 번에서 사용된 형태를 하나의 문장으로 표현한 것이다 . 

- 자바에서 메소드의 연결은 횟수에 제한을 두지 않는다 .  즉 다음과 같은 사용이 가능하다 String.valueOf(b).toUpperCase().concat("java").replace('j','p')

Page 74: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

7 StringBuffer 클래스

74

StringBuffer 클래스 생성자- StringBuffer() 생성자 : 묵시적으로 16 개의 문자를 저장할 수 있는 객체를 생성

- StringBuffer(int size) 생성자 : size 로 지정된 문자를 저장할 수 있는 객체를 생성

- StringBuffer(String str) 생성자 : str 로 지정된 문자열과 추가로 16 개의 문자를 더 저장할 수 있는 객체를 생성

StringBuffer()StringBuffer(int size)StringBuffer(String str)

형식

Page 75: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

7 StringBuffer 클래스

75

StringBuffer  클래스의 주요 메소드

메소드 설명StringBuffer append(boolean b) b 를 현재의 문자열 끝에 첨부StringBuffer append(char ch) ch 를 현재의 문자열 끝에 첨부StringBuffer append(double d) d 를 현재의 문자열 끝에 첨부StringBuffer append(float f) f 를 현재의 문자열 끝에 첨부StringBuffer append(int i) i 를 현재의 문자열 끝에 첨부StringBuffer append(long l) l 을 현재의 문자열 끝에 첨부StringBuffer append(Object obj) obj 가 가진 문자열을 현재의 문자열 끝에 첨부StringBuffer append(Object obj) obj 가 가진 문자열을 현재의 문자열 끝에 첨부StringBuffer append(String str) str 을 현재의 문자열 끝에 첨부int capacity() 현재의 문자열 버퍼의 크기를 반환char charAt(int i) 번째 인덱스에 해당하는 문자를 반환StringBuffer delete(int start, int end) 문자열의 start 에서 end 까지를 삭제

Page 76: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

7 StringBuffer 클래스

76

StringBuffer  클래스의 주요 메소드

메소드 설명StringBuffer insert(int i, boolean b) i 번째 인덱스 전에 b 를 삽입StringBuffer insert(int i, char ch) i 번째 인덱스 전에 ch 를 삽입StringBuffer insert(int i, int j) i 번째 인덱스 전에 j 를 삽입StringBuffer insert(int i, long l) i 번째 인덱스 전에 l 을 삽입StringBuffer insert(int i, Object obj) i 번째 인덱스 전에 obj 를 삽입StringBuffer insert(int i, String str) i 번째 인덱스 전에 str 을 삽입int length() 문자열 버퍼에 있는 문자의 개수를 반환StringBuffer reverse() 문자열을 역순의 문자열로 변환하여 반환void setCharAt(int i, char ch) i 번째 문자를 ch 로 설정void setLength(int len) 버퍼의 크기를 len  크기로 설정String toString() 현재의 문자열을 String  객체로 반환String substring(int s, int e) 문자열의 s 부터 e 까지를 string  객체로 반환

Page 77: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

7 StringBuffer 클래스

77

실습예제

StringBufferTest1.java010203040506070809101112

public class StringBufferTest1 { public static void main(String args[]) { StringBuffer str1 = new StringBuffer("Hello JAVA"); StringBuffer str2 = new StringBuffer(" 안녕하세요 자바 "); System.out.println(" 문자열 => " + str1); System.out.println(" 문자열 길이 => " + str1.length()); System.out.println(" 버퍼를 포함한 길이 => " + str1.capacity()); System.out.println(" 문자열 => " + str2); System.out.println(" 문자열 길이 => " + str2.length()); System.out.println(" 버퍼를 포함한 길이 => " + str2.capacity()); }}

버퍼를 포함한 용량

Page 78: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

7 StringBuffer 클래스

78

프로그램 설명- 00 : StringBuffer  클래스로부터 객체가 생성될 때에는 문자열이 효율적으로 변할 수 있도록

생성되는 문자열 크기에 16 개의 문자가 더 추가될 수 있는 공간을 확보한다 .

Page 79: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

7 StringBuffer 클래스

79

실습예제

StringBufferTest2.java01020304050607080910111213141516

public class StringBufferTest2 { public static void main(String args[]) { StringBuffer str1 = new StringBuffer(" 안녕 자바 "); System.out.println(" 버퍼에 들어있는 내용 => " + str1); System.out.println(" 문자열 끼워넣기 => " + str1.insert(3,"Power ")); System.out.println(" 버퍼의 5 번째 문자 => " + str1.charAt(4)); str1.setCharAt(0, ' 정 '); System.out.println("0 번째 값을 ' 정 ' 으로 변경 => " + str1); str1.setLength(8); System.out.println(" 버퍼의 새로운 값 => " + str1); System.out.println(" 문자열의 역순출력하기 => " + str1.reverse()); }}

3 번째 위치에 문자열 삽입4 번째 위치에 문자열 삽입

0 번째 위치의 문자를 ‘정’으로 치환문자열의 길이를 8 로 조정

문자열을 역순으로 출력

Page 80: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

7 StringBuffer 클래스

80

프로그램 설명- 00 :  현재의 문자열의 길이를 강제로 조정한다 .  뒷부분의 문자열이 손실된다 .

Page 81: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

8 유틸리티 패키지 개요

81

java.util  패키지의 주요 클래스

384 page

Page 82: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

8 유틸리티 패키지 개요

82

java.util  패키지의 주요 클래스

384 page

Page 83: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

9 Random 클래스

83

Random 클래스- 난수 발생 기능을 제공

- double, float, int, long 등 다양한 형태

Random 클래스 생성자- Random() 생성자 : 현재의 시간을 초깃값으로 하는 난수 발생기를 생성

- Random (long seed) 생성자 : seed 값을 초깃값으로 하는 난수 발생기를 생성

Random()Random(long seed)

형식

Page 84: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

9 Random 클래스

84

Random  클래스의 주요 메소드

메소드 설명void nextBytes(byte buffer[]) buffer 를 난수로 채운다 .float nextFloat() float 형의 난수를 반환int nextInt() int 형의 난수를 반환long getLong() long 형의 난수를 반환double nextDouble() double 형의 난수를 반환double nextGaussian() Gaussian 형의 난수를 double  값으로 반환void setSeed(long newseed) 난수 발생기의 seed  값을 newseed  값으로 설정

Page 85: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

9 Random 클래스

85

실습예제

RandomTest.java010203040506070809101112

import java.util.*;public class RandomTest { public static void main(String args[]) { Random rangen = new Random(); for(int i = 1 ; i <= 5 ; i++) { foat a = rangen.nextFloat(); System.out.print("Float 형 난수 : " + a); int b = rangen.nextInt(); System.out.println(" Int 형 난수 : " + b); } }}

java.util  패키지를 포함

Random  객체 생성실수형의 난수 생성

정수형의 난수 생성

Page 86: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

9 Random 클래스

86

프로그램 설명- 01 : java.util  패키지에 속한 클래스를 사용하기 위해 java.util  패키지를 import  시켰다 .- 04 : Random  클래스로부터 객체를 생성하였다 .- 06, 08 :  실수형과 정수형의 난수를 생성하였다 .

Page 87: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

10 Arrays 클래스

87

Arrays 클래스의 객체- 자바에서 배열은 객체로 취급하며 , 사용하는 모든 배열

Arrays  클래스의 주요 메소드

메소드 설명static List asList(Object[] a) 배열 a 를 List 형의 객체로 반환static int binarySearch(int[] a, int key)

배열 a 에서 key 로 지정된 값을 찾아 반환 . boolean 을 제외한 7 가지 기본 자료형과 Object 형도 사용 가능 .  이 메소드는 배열 요소들이 정렬된 후에 사용해야 한다 .

static boolean equals(int[] a, int[] b) 배열 a 와 b 가 같은지를 비교하여 결과를 반환 . 8 개의 기본자료형과 Object 형도 사용 가능

static void fill(int[] a, int value) 배열 a 의 모든 요소를 value  값으로 설정한다 . 8 개의 기본자료형과 Object 형도 사용 가능

static void fill(int[] a, int from, int to, int value)

배열 a 의 from 부터 to 까지를 value  값으로 설정한다 . 8 개의기본 자료형과 Object 형도 사용 가능

static void sort(int[] a) 배열 a 의 요소들을 정렬 . boolean 을 제외한 7 가지 기본 자료형과 Object 형도 사용 가능

static void sort(int[] a, int from, int to) 배열 a 의 from 부터 to 까지를 정렬 . boolean 을 제외한 7 가지 기본 자료형과 Object 형도 사용 가능

static String toString(int[] a) 배열 a 의 요소들을 문자열로 반환한다 .  이 메소드는 모든자료형에 적용 가능

Page 88: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

10 Arrays 클래스

88

실습예제

ArraysTest1.java0102030405060708091011121314151617

import java.util.*; public class ArraysTest1 { public static void main(String[] args) { int[] int1 = {0,1,2,3,4,5,6,7,8,9}; System.out.println(" 초기배열 : " + Arrays.toString(int1)); Arrays.fll(int1, 3, 5, 33); System.out.println("fll() 수행 후 : " + Arrays.toString(int1)); Arrays.sort(int1); System.out.println("sort() 수행 후 : " + Arrays.toString(int1)); System.out.println("33 은 배열의 " + Arrays.binarySearch(int1,33) + " 번째 요소 "); int[] int2 = {5,4,3,2,1}; System.out.println(" 두 번째 배열 : " + Arrays.toString(int2)); System.out.println(" 두 개의 배열이 같은가 ? " + Arrays.equals(int1, int2)); }}

배열의 요소를 문자열로 출력배열의 특정 위치 값을 치환

배열 요소 정렬

배열 요소 2 진 탐색

배열이 같은지 검사

Page 89: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

10 Arrays 클래스

89

프로그램 설명- 05 : toString()  메소드는 배열의 요소를 문자열로 출력하는 메소드이다 .  모든 종류의

배열을 문자열로 출력할 수 있다 .- 06 :  배열의 특정 위치의 값을 특정 값으로 치환하는 메소드이다 .  3, 4 번 위치의 값을 33

으로 치환하였다 .- 08 :  배열의 요소를 오름차순으로 정렬하였다 .- 10~11 :  배열에서 특정 요소를 검색하여 배열의 위치를 반환한다 .  검색은 2 진 탐색기법을

사용한다 . - 15 :  두 개의 배열 요소가 같은지를 검사한다 .

Page 90: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

10 Arrays 클래스

90

Page 91: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

10 Arrays 클래스

91

실습예제

ArraysTest2.java0102030405060708091011121314

import java.util.Arrays;public class ArraysTest2 { static String array1[] = {"IMF", " 제주도 ", " 자바도사 ", " 한글나라 ", "Computer", " 모카 ", "JAVA", " 인터넷탐색 ", " 초롱초롱 ", "come", " 바람 ", " 스크립터 ", " 군고구마 ", " 도서 ", "their", "country" }; public static void main(String args[]) { System.out.println("======= 정렬 전 데이터 =========="); System.out.println(Arrays.toString(array1)); Arrays.sort(array1); System.out.println("======= 정렬 후 데이터 =========="); System.out.println(Arrays.toString(array1)); }}

배열의 요소를 정렬

Page 92: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

10 Arrays 클래스

92

프로그램 설명- 10 :  배열의 요소를 정렬한다 .

Page 93: 11 장 .  패키지와  주요 클래스

패키지 개요와 패키지 사용 ① JDK 는 클래스들의 특성에 따라 클래스들을 패키지로 구분하여 제공하고 있다 .② import 문을 사용하여 원하는 패키지를 포함하여 클래스를 작성할 수 있다 .

java.lang 패키지의 개요 ① 자바의 기본 패키지로서 import 문을 사용하여 포함시키지 않아도 자동으로

포함되는 패키지이다 .

Object 클래스 ① 모든 자바 클래스의 최상위 클래스이다 .② Object 클래스는 extends 로 지정하지 않아도 상속되는 클래스이다 .③ Object 클래스에서 선언된 메소드는 모든 자바 프로그램에서 사용이 가능하다 .

학습정리

93

Page 94: 11 장 .  패키지와  주요 클래스

포장 (Wrapper) 클래스 ① 자바에서 사용되는 8 개의 기본 자료형에 대해 포장 클래스를 제공한다 .② 포장 클래스를 사용함으로써 클래스에서 제공되는 다양한 기능의 메소드를 쉽게 사용할

수 있다 . 문자열의 개요

① 자바는 문자열을 위해 String 클래스와 StringBuffer 클래스를 제공하고 있다 .② 한번 생성된 다음에 변하지 않는 문자열 , 즉 상수 문자열을 사용할 때는 String

클래스를 이용하고 , 프로그램에서 계속 변하는 문자열을 사용할 때는 StringBuffer 클래스를 이용한다 .

java.util 패키지 ① 자바는 다양한 기능을 가진 클래스들을 java.util 패키지로 제공하고 있다 .② Random 클래스는 난수를 발생시키는 클래스로서 , 다양한 형태의 난수를 생성할 수

있다 .③ Arrays 클래스는 배열을 나타내는 클래스로서 , 다양하고 편리한 메소드를 제공하고

있다 .

학습정리

94

Page 95: 11 장 .  패키지와  주요 클래스

11 장 . 패키지와 주요 클래스

95

수고하셨습니다 .질문 있습니까 ?


Recommended