chapter 05 문자열 배열 디버깅 -...

35
1/35 Chapter 05 문자열, 배열, 디버깅 상지대학교 컴퓨터공학과 2017년 2학기

Upload: others

Post on 09-Oct-2019

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Chapter 05 문자열 배열 디버깅 - compiler.sangji.ac.krcompiler.sangji.ac.kr/lecture/java/2017/chapter05.pdf · 03 배열응용. 20 /35 - 이클립스에서매개변수제공

1/35

Chapter 05

문자열, 배열, 디버깅

상지대학교 컴퓨터공학과

2017년 2학기

Page 2: Chapter 05 문자열 배열 디버깅 - compiler.sangji.ac.krcompiler.sangji.ac.kr/lecture/java/2017/chapter05.pdf · 03 배열응용. 20 /35 - 이클립스에서매개변수제공

2/35

배열 기초02

문자열01

배열 응용03

디버깅04

프로그래밍 문제

도전 과제

연습 문제

Page 3: Chapter 05 문자열 배열 디버깅 - compiler.sangji.ac.krcompiler.sangji.ac.kr/lecture/java/2017/chapter05.pdf · 03 배열응용. 20 /35 - 이클립스에서매개변수제공

3/35

- 문자열 리터럴은 내부적으로 new String()을 호출해 생성한 객체이다.

- 따라서 s1은 new String(“안녕, 자바!”)를 호출해서 생성한 객체를 가리킨다.

- 그러나 내용이 같은 문자열 리터럴이라면 더 이상 새로운 String 객체를 생성

하지 않은 채 기존 리터털을 공유. 따라서 s1과 s2는 동일한 String 객체를 가

리킨다.

문자열의 선언과 생성

01 문자열

Page 4: Chapter 05 문자열 배열 디버깅 - compiler.sangji.ac.krcompiler.sangji.ac.kr/lecture/java/2017/chapter05.pdf · 03 배열응용. 20 /35 - 이클립스에서매개변수제공

4/35

• ==와 != 연산자는 두 문자열의 내용을 비교하는 것이 아니라 동일한 객

체인지 검사

• 예제 : 교재 169p [예제 5-1]

문자열의 비교(1)

01 문자열

Page 5: Chapter 05 문자열 배열 디버깅 - compiler.sangji.ac.krcompiler.sangji.ac.kr/lecture/java/2017/chapter05.pdf · 03 배열응용. 20 /35 - 이클립스에서매개변수제공

5/35

• String 클래스에서 제공하는 문자열 비교 메서드

• 예

• 예제 : 교재 170p [예제 5-2]

문자열의 비교(2)

01 문자열

Page 6: Chapter 05 문자열 배열 디버깅 - compiler.sangji.ac.krcompiler.sangji.ac.kr/lecture/java/2017/chapter05.pdf · 03 배열응용. 20 /35 - 이클립스에서매개변수제공

6/35

• 문자열의 조작

- String 클래스에서 제공하는 메서드

문자열의 비교(3)

01 문자열

Page 7: Chapter 05 문자열 배열 디버깅 - compiler.sangji.ac.krcompiler.sangji.ac.kr/lecture/java/2017/chapter05.pdf · 03 배열응용. 20 /35 - 이클립스에서매개변수제공

7/35

• 예제

- 교재 172p [예제 5-3]

- 교재 173p [예제 5-4]

문자열의 비교(4)

01 문자열

Page 8: Chapter 05 문자열 배열 디버깅 - compiler.sangji.ac.krcompiler.sangji.ac.kr/lecture/java/2017/chapter05.pdf · 03 배열응용. 20 /35 - 이클립스에서매개변수제공

8/35

• 배열(Array)은 동일한 데이터 타입의 집합을 쉽게 처리할 수 있는 데이

터 구조

배열의 개념(1)

02 배열 기초

Page 9: Chapter 05 문자열 배열 디버깅 - compiler.sangji.ac.krcompiler.sangji.ac.kr/lecture/java/2017/chapter05.pdf · 03 배열응용. 20 /35 - 이클립스에서매개변수제공

9/35

• 배열이 필요한 경우 : 5과목의 평균 점수를 구하는 경우

배열의 개념(2)

02 배열 기초

Page 10: Chapter 05 문자열 배열 디버깅 - compiler.sangji.ac.krcompiler.sangji.ac.kr/lecture/java/2017/chapter05.pdf · 03 배열응용. 20 /35 - 이클립스에서매개변수제공

10/35

• 배열의 선언

- 실제는 배열 변수의 선언

• 배열의 선언과 생성

- 실제는 배열 변수의 선언과 초기화

배열의 선언과 생성(1)

02 배열 기초

Page 11: Chapter 05 문자열 배열 디버깅 - compiler.sangji.ac.krcompiler.sangji.ac.kr/lecture/java/2017/chapter05.pdf · 03 배열응용. 20 /35 - 이클립스에서매개변수제공

11/35

• 배열의 선언과 생성 예

배열의 선언과 생성(2)

02 배열 기초

Page 12: Chapter 05 문자열 배열 디버깅 - compiler.sangji.ac.krcompiler.sangji.ac.kr/lecture/java/2017/chapter05.pdf · 03 배열응용. 20 /35 - 이클립스에서매개변수제공

12/35

• 배열 원소의 접근

• 배열의 크기

- 배열이 생성될 때 배열의 크기가 결정

- 배열의 length 필드가 배열의 크기를 나타냄. 예를 들어, scores가 가리키는

배열의 크기는 scores.lengt

• 예제 : 교재 177p [예제 5-5]

배열 원소의 접근과 배열의 크기

02 배열 기초

Page 13: Chapter 05 문자열 배열 디버깅 - compiler.sangji.ac.krcompiler.sangji.ac.kr/lecture/java/2017/chapter05.pdf · 03 배열응용. 20 /35 - 이클립스에서매개변수제공

13/35

• 배열의 배열

• 예

- 학생 3명의 5과목 성적을 처리하는 정수 타입 2차원 배열(3행 × 5열)인

scores

다차원 배열(1)

02 배열 기초

Page 14: Chapter 05 문자열 배열 디버깅 - compiler.sangji.ac.krcompiler.sangji.ac.kr/lecture/java/2017/chapter05.pdf · 03 배열응용. 20 /35 - 이클립스에서매개변수제공

14/35

• 선언과 초기화

• 예제 : 교재 179p [예제 5-6]

다차원 배열(2)

02 배열 기초

Page 15: Chapter 05 문자열 배열 디버깅 - compiler.sangji.ac.krcompiler.sangji.ac.kr/lecture/java/2017/chapter05.pdf · 03 배열응용. 20 /35 - 이클립스에서매개변수제공

15/35

• 처리할 데이터의 개수가 고정된 경우가 아니라면 정적 배열은 자원을

낭비하거나 프로그램을 다시 컴파일

• 자바는 크기가 유동적인 배열을 지원하기 위해 ArrayList 클래스 제공

동적 배열(1)

02 배열 기초

Page 16: Chapter 05 문자열 배열 디버깅 - compiler.sangji.ac.krcompiler.sangji.ac.kr/lecture/java/2017/chapter05.pdf · 03 배열응용. 20 /35 - 이클립스에서매개변수제공

16/35

• ArrayList 객체 생성

• ArrayList 원소 접근

• 예제 : 교재 181p [예제 5-7]

동적 배열(2)

02 배열 기초

Page 17: Chapter 05 문자열 배열 디버깅 - compiler.sangji.ac.krcompiler.sangji.ac.kr/lecture/java/2017/chapter05.pdf · 03 배열응용. 20 /35 - 이클립스에서매개변수제공

17/35

• for~each 반복문 : JDK 5부터 도입된 것으로 for 문을 개선한 방식

• 특정 원소를 나타내기 위한 인덱스를 사용하지 않는다.

• 예제 : 교재 182p [예제 5-8]

배열을 위한 반복문

03 배열 응용

Page 18: Chapter 05 문자열 배열 디버깅 - compiler.sangji.ac.krcompiler.sangji.ac.kr/lecture/java/2017/chapter05.pdf · 03 배열응용. 20 /35 - 이클립스에서매개변수제공

18/35

• 예제 : 교재 183p [예제 5-9]

메서드의 인수로 배열 전달(1)

03 배열 응용

Page 19: Chapter 05 문자열 배열 디버깅 - compiler.sangji.ac.krcompiler.sangji.ac.kr/lecture/java/2017/chapter05.pdf · 03 배열응용. 20 /35 - 이클립스에서매개변수제공

19/35

• 메인 메서드의 매개변수 전달

- 명령창에서의 실행 명령

• 예제 : 교재 185p [예제 5-10]

메서드의 인수로 배열 전달(2)

03 배열 응용

Page 20: Chapter 05 문자열 배열 디버깅 - compiler.sangji.ac.krcompiler.sangji.ac.kr/lecture/java/2017/chapter05.pdf · 03 배열응용. 20 /35 - 이클립스에서매개변수제공

20/35

- 이클립스에서 매개변수 제공

메서드의 인수로 배열 전달(3)

03 배열 응용

Page 21: Chapter 05 문자열 배열 디버깅 - compiler.sangji.ac.krcompiler.sangji.ac.kr/lecture/java/2017/chapter05.pdf · 03 배열응용. 20 /35 - 이클립스에서매개변수제공

21/35

- 명령 창에서 메인 메서드의 인수 사용

메서드의 인수로 배열 전달(4)

03 배열 응용

Page 22: Chapter 05 문자열 배열 디버깅 - compiler.sangji.ac.krcompiler.sangji.ac.kr/lecture/java/2017/chapter05.pdf · 03 배열응용. 20 /35 - 이클립스에서매개변수제공

22/35

• JDK 5부터는 메서드에도 데이터 타입이 같은 가변 개수(variable

length)의 인수 전달 가능

• 한 개의 가변 개수 매개변수만 사용 가능하며 가변 개수 매개변수는

마지막에 위치

• 가변 개수 인수를 가진 메서드를 호출하면 내부적으로 배열을 생성해

처리

• 예제 : 교재 187p [예제 5-11]

가변 개수 인수

03 배열 응용

Page 23: Chapter 05 문자열 배열 디버깅 - compiler.sangji.ac.krcompiler.sangji.ac.kr/lecture/java/2017/chapter05.pdf · 03 배열응용. 20 /35 - 이클립스에서매개변수제공

23/35

• 객체 배열은 객체를 참조하는 주소를 원소로 구성

• 예

- Ball 클래스의 객체로 구성된 배열을 선언하고 초기화

- 생성자를 호출하여 Ball 객체를 생성해야 함

객체의 배열(1)

03 배열 응용

5개의 Ball 객체를 생성하는 것이 아니라5개의 Ball 객체를 참조할 변수를 준비

Page 24: Chapter 05 문자열 배열 디버깅 - compiler.sangji.ac.krcompiler.sangji.ac.kr/lecture/java/2017/chapter05.pdf · 03 배열응용. 20 /35 - 이클립스에서매개변수제공

24/35

• 예제 : 교재 190p [예제 5-13]

객체의 배열(2)

03 배열 응용

Page 25: Chapter 05 문자열 배열 디버깅 - compiler.sangji.ac.krcompiler.sangji.ac.kr/lecture/java/2017/chapter05.pdf · 03 배열응용. 20 /35 - 이클립스에서매개변수제공

25/35

• 예제 : 교재 192p [예제 5-14]

- 변수 n2에는 n2, 변수 n3에는 n3, 변수 m에는 n/d을 대입하는 예제

오류의 종류

04 디버깅

Page 26: Chapter 05 문자열 배열 디버깅 - compiler.sangji.ac.krcompiler.sangji.ac.kr/lecture/java/2017/chapter05.pdf · 03 배열응용. 20 /35 - 이클립스에서매개변수제공

26/35

• 이클립스는 에디터 뷰에 문법 오류는 알려주지만 논리 오류는 알려주지

않음

• 논리 오류는 프로그램 실행 도중에 변수 상태를 추적하는 것이 가장 기

본적인 오류 점검 방식

• 디버그 퍼스펙티브로 이동

디버깅 과정(1)

04 디버깅

Page 27: Chapter 05 문자열 배열 디버깅 - compiler.sangji.ac.krcompiler.sangji.ac.kr/lecture/java/2017/chapter05.pdf · 03 배열응용. 20 /35 - 이클립스에서매개변수제공

27/35

• 디버깅 명령어와 이클립스 단축키

디버깅 과정(2)

04 디버깅

Page 28: Chapter 05 문자열 배열 디버깅 - compiler.sangji.ac.krcompiler.sangji.ac.kr/lecture/java/2017/chapter05.pdf · 03 배열응용. 20 /35 - 이클립스에서매개변수제공

28/35

• 샘플 프로그램 : 교재 194p [예제 5-15]

디버깅 과정(3)

04 디버깅

Page 29: Chapter 05 문자열 배열 디버깅 - compiler.sangji.ac.krcompiler.sangji.ac.kr/lecture/java/2017/chapter05.pdf · 03 배열응용. 20 /35 - 이클립스에서매개변수제공

29/35

• 디버그 퍼스펙티브와 중단점 설정

디버깅 과정(4)

05 문자열, 배열, 디버깅

Page 30: Chapter 05 문자열 배열 디버깅 - compiler.sangji.ac.krcompiler.sangji.ac.kr/lecture/java/2017/chapter05.pdf · 03 배열응용. 20 /35 - 이클립스에서매개변수제공

30/35

• 디버그 퍼스펙티브와 각종 실행 버튼

디버깅 과정(5)

04 디버깅

Page 31: Chapter 05 문자열 배열 디버깅 - compiler.sangji.ac.krcompiler.sangji.ac.kr/lecture/java/2017/chapter05.pdf · 03 배열응용. 20 /35 - 이클립스에서매개변수제공

31/35

• 디버그 퍼스펙티브와 변수 추적

디버깅 과정(6)

04 디버깅

Page 32: Chapter 05 문자열 배열 디버깅 - compiler.sangji.ac.krcompiler.sangji.ac.kr/lecture/java/2017/chapter05.pdf · 03 배열응용. 20 /35 - 이클립스에서매개변수제공

32/35

• 디버그 퍼스펙티브와 실행 결과

디버깅 과정(7)

04 디버깅

Page 33: Chapter 05 문자열 배열 디버깅 - compiler.sangji.ac.krcompiler.sangji.ac.kr/lecture/java/2017/chapter05.pdf · 03 배열응용. 20 /35 - 이클립스에서매개변수제공

33/35

도전 과제

Page 34: Chapter 05 문자열 배열 디버깅 - compiler.sangji.ac.krcompiler.sangji.ac.kr/lecture/java/2017/chapter05.pdf · 03 배열응용. 20 /35 - 이클립스에서매개변수제공

34/35

도전 과제

Page 35: Chapter 05 문자열 배열 디버깅 - compiler.sangji.ac.krcompiler.sangji.ac.kr/lecture/java/2017/chapter05.pdf · 03 배열응용. 20 /35 - 이클립스에서매개변수제공

Q & A

한빛아카데미 35/35