12장 문자열 12.1 문자열의 개요 12.2 String 클래스 12.3 StringBuffer 클래스

Slides:



Advertisements
Similar presentations
3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
Advertisements

Python Ch.06 RaspberryPi Sejin Oh. Raspberry Pi Python  IDLE(Integrated Development Environment)  라즈베리 파이 배포본들은 일반적으로 파이썬과 파이썬 3 의 IDLE 파 이썬 개발 도구를.
Chapter 12. 배열. 배열  동일한 항목들이 동일한 크기로 연속적으로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는 자료 구조.
1 08 배열. 한국대학교 객체지향연구소 2 C 로 배우는 프로그래밍 기초 2 nd Edition 배열  동일한 자료유형의 여러 변수를 일괄 선언  연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는.
1. 2 차원 배열  배열은 동일한 데이터 유형으로 여러 개의 변수를 사용할 경우 같은 이 름으로 지정하여 간편하게 사용할 수 있도록 하는 것으로서 앞에서 1 차원 배열을 공부하였습니다.  2 차원 배열은 바둑판을 생각하면 되며, 1 차원 배열에서 사용하는 첨자를 2.
7장 문자열 클래스.
자바 키워드 & 문자열 다루기 인터넷 프로그래밍 강의자료 3 (1, 3반) 한용재
프로그래밍 개론 Ⅰ 제 3장. 클래스와 객체의 사용 ①.
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
최윤정 Java 프로그래밍 클래스 상속 최윤정
Java로 배우는 디자인패턴 입문 Chapter 5. Singleton 단 하나의 인스턴스
4장 자바 기본 구조 4.1 자바 응용 프로그램 분석 4.2 자바 애플릿 프로그램 분석
제 9 장 구조체와 공용체.
표준 API(클래스라이브러리)의 기본 클래스 활용
3. 자바에서 지원하는 패키지 자바에서 기본적으로 제공하는 패키지.
C 8장. 포인터 #include <stdio.h> int main(void) { int num;
7장 배열 ②.
JAVA 프로그래밍 6장 객체지향프로그래밍의 핵심.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
Java 11장. 패키지와 주요 클래스 public class SumTest {
Lesson 5. 레퍼런스 데이터형.
4.1 자바 응용 프로그램 분석 4.2 식별자(identifier)와 예약어 4.3 변수와 자료형
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
Chap09 패키지와 주요 클래스 9.1 패키지 개요와 패키지의 사용 9.2 java.lang 패키지의 개요
Lesson 9. 예외처리.
Lesson 6. 형변환.
5장. 참조 타입.
Heesang kim PL/SQL 3 Heesang kim.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
3장 자바의 기본문법(2).
자바 5.0 프로그래밍.
11장. 1차원 배열.
13. 연산자 오버로딩.
12장 문자열 12.1 문자열의 개요 12.2 String 클래스 12.3 StringBuffer 클래스.
JA A V W. 03.
인터넷응용프로그래밍 JavaScript(Intro).
Lesson 4. 수식과 연산자.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
Java의 정석 제 5 장 배 열 Java 정석 남궁성 강의 의
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
2장. 변수와 타입.
자바 5.0 프로그래밍.
Power Java 제11장 상속.
Chapter 02. 자바 기본 문법.
8주차: Strings, Arrays and Pointers
JA A V W. 06.
CHAP 21. 전화, SMS, 주소록.
객체기반 SW설계 팀활동지 4.
[ 단원 04 ] 반복과 배열.
2nd day Indexing and Slicing
데이터 동적 할당 Collection class.
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
Homework #12 (1/2) 프로그램을 작성하고, 프로그램과 실행 결과를 프린트하여 제출한다.
7주차: Functions and Arrays
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
11장 배열 1. 배열이란? 1.1 배열의 개요 1.2 배열의 선언과 사용.
8장 선택 논리 II 1. 논리연산자 1.1 논리연산자 : AND (&&) 1.2 논리연산자 : OR (||)
제 4 장 Record.
17장. 문자열 01_ 문자열 사용의 기본 02_ 문자열의 사용.
제 29 강 스트링(string) 다루기 s a i s . s T i h t g r i n.
어서와 C언어는 처음이지 제21장.
7 생성자 함수.
6 객체.
3장 자바의 기본문법(2).
2019 2학기 9장 배열과 포인터 1. 주소, 주소연산자(&) 2. 포인터, 역참조연산자(*) 3. 배열과 포인터.
Presentation transcript:

12장 문자열 12.1 문자열의 개요 12.2 String 클래스 12.3 StringBuffer 클래스

12.1 문자열의 개요 자바에서는 문자열을 객체로 취급 java.lang 패키지에 포함 java.lang.String 클래스와 java.lang.StringBuffer 클래스 제공 String 클래스 : 한번 생성된 다음 변하지 않는 문자열에 사용 StringBuffer 클래스 : 계속하여 변할 수 있는 문자열에 사용 문자열을 2개의 클래스로 제공하는 이유 : 효율성

11.2 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) chars[] : 문자 배열 startindex : 부분 문자열을 추출하기 위해 지정된 인덱스 값 numChars : startindex에서 시작하여 추출할 문자 또는 바이트의 개수 asciiChars[] : 바이트 배열로서 아스키(ascii) 문자 배열을 의미 highOrderByte : 각 문자들(아스키, 한글 등)의 상위 바이트를 지정하는 값이며, 아스키 문자를 지정하기 위해서는 0을 사용

String 클래스 - 문자열을 생성하는 예 출력결과 교재 참조 class StringExam1 { public static void main(String args[]) { char a[] = {'C','o','m','p','u','t','e','r’} ; String s1 = new String(a); // 문자배열로부터 문자열 객체 s1 생성 String s2 = new String(a,3,2); // 문자배열로부터 부분 문자열을 추출하여 s2 생성 String s3 = new String("알기 쉽게 해설한 Java"); // 문자열로부터 직접 객체 s3 생성 System.out.println("문자열 s1 : " + s1); System.out.println("문자열 s1의 길이 : " + s1.length()); System.out.println("문자열 s2 : " + s2); System.out.println("문자열 s3 : " + s3); } 출력결과 교재 참조

String 클래스 - 바이트 배열을 이용하여 문자열을 생성하는 예 class StringExam2 { public static void main(String args[]) { byte a[] = {80,85,83,65,78}; // 바이트 배열 생성 System.out.println("초기 바이트 배열 : {80,85,83,65,78}"); String a1 = new String(a,0); // 바이트 배열을 문자열로 변환하여 객체 a1 생성 String a2 = new String(a,0,2,3); // 부분 문자열 객체 a2 생성 System.out.println("byte형의 배열을 문자열로 변환 : " + a1); System.out.println("두 번째부터 세 개만 추출 : " + a2); } 출력결과 교재 참조

String 클래스 String 클래스의 주요 메소드 int length() 문자열의 길이를 반환 char charAt(int i) 문자열에서 i번째 문자를 반환 void getChars(int sourceStart, 문자열의 일부를 문자배열(target[])로 작성 int sourceEnd, char target[], int targetStart) 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로 지정된 문자의 첫 번째 인덱스를 반환

String 클래스 String 클래스의 주요 메소드(계속) int indexOf(String str) 문자열 str의 첫 번째 인덱스를 반환 int indexOf(int ch, int startIndex) 인덱스 startIndex 이후의 문자 ch의 첫 번째 인덱스 를 반환 int indexOf(String str, int startIndex) 인덱스 startIndex 이후의 문자열 str의 첫 번째 인덱스를 반환 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 original로 지정된 문자를 replacement로 지정된 char replacement) 문자로 대치

String 클래스 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() 문자열을 모두 대문자로 변환하여 반환

String 클래스 - (1) 문자열의 길이 메소드 : int length() : 문자열의 길이를 반환 char chars[] = {'K', 'o', 'r', 'e', 'a’}; String s = new String(chars); System.out.println(s.length()); 결과로 5를 출력

String 클래스 - (2) 메소드를 이용하지 않는 문자열의 조작 New를 사용하지 않고 문자열을 생성 String s2 = "2002 WorldCup Korea"; // 리터럴을 사용한 문자열 생성 System.out.println("2002 Pusan Asiad".length()); // String 객체 대신에 직접 스트링 리터럴을 사용할 수 있다. 16을 출력 String age = "20"; String s = "그의 나이는 " + age + "세 입니다."; System.out.println(s); // "그의 나이는 20세입니다."를 출력 “+” 연산자를 이용하여 문자열을 결합

String 클래스 - (2) 메소드를 이용하지 않는 문자열의 조작 문자열이 아닌 다른 형의 데이터도 문자열과 결합 int age = 20; String s1 = "그의 나이는 " + age + "세 입니다."; // int 형의 데이터를 문자열로 변환하여 결합 System.out.println(s1); // "그의 나이는 20세입니다."를 출력 String s2 = "WorldCup " + 2 + 0 + 0 + 2; System.out.println(s2); // "WorldCup 2002"를 출력 String s3 = "WorldCup " + (2 + 0 + 0 + 2); // "WorldCup 4"를 출력

String 클래스 - (3) 문자열에서의 문자 추출 메소드 char charAt(int i) : 문자열중에서 i번째 문자를 반환 void getChars(int sourceStart, int sourceEnd, char target[], int targetStart) : 문자열의 일부를 문자 배열로(target[])제공.

String 클래스 - (3) 문자열에서의 문자 추출 문자열에서 문자를 추출하는 예 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); } 출력결과 교재 참조

String 클래스 - (4) 문자열 비교 메소드 boolean equals(Object str) : str로 지정된 문자열과 현재의 문자열이 같은지를 비교 boolean equalsIgnoreCase(String str) : 문자열 비교시 대소문자 무시 boolean startsWith(String str) : 현재의 문자열이 str로 지정된 문자열로 시작하면 true, 아니면 false를 반환 boolean endsWith(String str) : 문자열이 str로 끝나면 true, 아니면 false

String 클래스 - (4) 문자열 비교 class EqualsExam { public static void main(String args[]) { String a1 = "알기쉽다." ; String a2 = "Apple"; String a3 = "APPLE"; System.out.println("문자열 a1 : " + a1); System.out.println("문자열 a2 : " + a2); System.out.println("문자열 a3 : " + a3); System.out.println("a1과 a2가 동일한 문자열? : " + a1.equals(a2)); System.out.println("a2와 a3가 동일한 문자열?(대소문자 무시) : " + a2.equalsIgnoreCase(a3)); } 출력결과 교재 참조

String 클래스 - (4) 문자열 비교 String s1 = "WorldCup Korea"; System.out.println(s1.startsWith("Wor")); // true 출력 System.out.println(s1.endsWith("rea")); // true 출력

String 클래스 - (5) 문자열 비교 - compareTo() 메소드 int compareTo(String str) : 현재의 문자열과 str로 지정된 문자열을 비교하여 현재의 문자열이 str로 지정된 문자열보다 크면 양수, 같으면 0, 작으면 음수값을 반환. 작다는 의미는 순서(알파벳)에 따라 앞에 온다는 의미

String 클래스 - (5) 문자열 비교 - compareTo() class StringCompare { 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 j = 0; j < array1.length; j++) { for(int i = j + 1; i < array1.length; i++) { if(array1[i].compareTo(array1[j]) < 0) { String t = array1[j]; array1[j] = array1[i]; array1[i] = t; } System.out.print(array1[j] + " "); }}} 출력결과 교재 참조

String 클래스 - (6) 문자열 탐색 문자열내에서 지정된 문자나 부분 문자열을 찾아내기 위한 2개의 메소드 제공. 2개의 메소드는 찾고자하는 문자나 부분 문자열의 위치를 반환 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)

String 클래스 - (6) 문자열 탐색 출력결과 교재 참조 class IndexExam { public static void main(String args[]) { String s = "알기 쉽게 해설한 JAVA. " + "java 배우기 쉽게 쓴 java 해설서"; System.out.println(s); System.out.println("indexOf(해) = " + s.indexOf('해')); System.out.println("lastIndexOf(해) = " + s.lastIndexOf('해')); System.out.println("indexOf(a) = " + s.indexOf("a")); System.out.println("lastIndexOf(a) = " + s.lastIndexOf("a")); System.out.println("indexOf(a, 5) = " + s.indexOf('a', 5)); System.out.println("lastIndexOf(a, 40) = " + s.lastIndexOf('a', 40)); System.out.println("indexOf(java, 10) = " + s.indexOf("java", 10)); System.out.println("lastIndexOf(java, 40) = " + s.lastIndexOf("java", 40)); } 출력결과 교재 참조

String 클래스 - (7) 문자열의 변환 String 클래스의 객체로 생성된 문자열은 변환될 수 없다. String 클래스는 현재의 문자열을 변환하여 새로운 문자열을 생성하는 메소드를 제공한다 메소드 String substring(int startIndex, int endIndex) : 부분 문자열을 반환 String concat(String constr) : 결합된 문자열 반환 String replace(char original, char replacement) : 치환된 문자열 반환 String trim() : 문자열의 시작과 끝부분에 있는 공백이 제거된 문자열을 반환 출력결과 교재 참조

String 클래스 - (7) 문자열의 변환 출력결과 교재 참조 class SubStringExam { 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 + " "; // 앞에 2개, 뒤에 5개의 공백 추가 System.out.println("공백 추가 str의 길이 : " +str.length()); str = str.trim(); // 문자열의 양쪽 공백을 제거 System.out.println("공백 제거 str의 길이 : ” + str.length()); } 출력결과 교재 참조

String 클래스 - (8) 형 변환 다른 형의 데이터를 문자열로 변환하는 메소드 대소문자를 변환 메소드. 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) 대소문자를 변환 메소드. String toLowerCase() String toUpperCase()

String 클래스 - (8) 형 변환 class ConvertString { 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) + "은 한국에서...."); String s1 = String.valueOf(b); // valueOf() 메소드는 static으로 선언된 클래스 메소드 System.out.println(String.valueOf(a) + " " + s1.toUpperCase() + }

12.3 StringBuffer 클래스 변할 수 있는 문자열을 가진다 생성자 StringBuffer(int size) : size 크기의 객체를 생성 StringBuffer(String str) : str로 지정된 문자열과 추가로 16개의 문자를 더 저장할 수 있는 객체를 생성 StringBuffer 객체는 객체의 크기가 변할 때 마다 메모리를 재 할당한다(16개의 문자를 저장할 수 있는 버퍼 단위로)

12.3 StringBuffer 클래스 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(String str) str을 현재의 문자열 끝에 첨부 int capacity() 현재의 문자열 버퍼의 크기를 반환 char charAt(int i) i 번째 인덱스에 해당하는 문자를 반환 StringBuffer insert(int i, boolean b) i 번째 인덱스 전에 b를 삽입 StringBuffer insert(int i, char ch) i 번째 인덱스 전에 ch를 삽입 StringBuffer insert(int i, int j) i 번째 인덱스 전에 j를 삽입

12.3 StringBuffer 클래스 StringBuffer 클래스의 메소드 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 객체로 반환

StringBuffer 클래스 - 예 class StringBufferExam1 { public static void main(String args[]) { StringBuffer str1 = new StringBuffer("Hello JAVA"); StringBuffer str2 = new StringBuffer("안녕하세요 자바"); System.out.println("버퍼1 내용 => " + str1); System.out.println("버퍼1 크기 => " + str1.length()); System.out.println("버퍼1 용량 => " + str1.capacity()); // 버퍼 크기보다 16이 큰 용량을 가진다. System.out.println("버퍼2 내용 => " + str2); System.out.println("버퍼2 크기 => " + str2.length()); System.out.println("버퍼2 용량 => " + str2.capacity()); } 출력결과 교재 참조

StringBuffer 클래스 - 예 public static void main(String args[]) { class StringBufferExam2 { 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, '정'); // 0번째 인덱스의 값을 '정'으로 설정 str1.setLength(8); // 문자열의 길이를 8로 설정. 나머지는 손실 System.out.println("버퍼의 새로운 값 => " + str1); System.out.println("문자열의 역순출력하기 => " + str1.reverse()); } 출력결과 교재 참조

12.4 String 객체의 변환 자바는 String 클래스에서도 가변 길이의 문자열 사용을 허용 class StringConvert1 public static void main(String args[]) String s1 = "새 천년 "; String s2 = "대한 민국"; s1 = s1 + s2; System.out.println(s1); class StringConvert2 StringBuffer s1 = new StringBuffer("새 천년 "); s1.append("대한 민국"); 이 두개의 프로그램은 같은 결과를 출력한다

12.4 String 객체의 변환 앞의 두 개의 프로그램은 같은 결과를 나타내지만 JVM이 두 개의 프로그램을 수행하는 절차에는 많은 차이가 있다. JVM은 String 객체가 변환될 경우에 StringBuffer 클래스를 이용하여 처리 StringConvert1 ① String 클래스의 객체 생성 ② 문자열 변환을 위한 임시 StringBuffer 객체 생성 ③ 문자열을 더하기 위한 StringBuffer 클래스의 append() 메소드 수행 ④ 임시 StringBuffer 객체를 String 객체로 변환하여 저장 ⑤ 임시로 사용된 StringBuffer 객체를 삭제(Garbage Collection) StringConvert2 ① StringBuffer 클래스의 객체 생성 ② 문자열을 더하기 위한 append() 메소드 수행