chapter 05 문자열 배열 디버깅 -...
TRANSCRIPT
1/35
Chapter 05
문자열, 배열, 디버깅
상지대학교 컴퓨터공학과
2017년 2학기
2/35
배열 기초02
문자열01
배열 응용03
디버깅04
프로그래밍 문제
도전 과제
연습 문제
3/35
- 문자열 리터럴은 내부적으로 new String()을 호출해 생성한 객체이다.
- 따라서 s1은 new String(“안녕, 자바!”)를 호출해서 생성한 객체를 가리킨다.
- 그러나 내용이 같은 문자열 리터럴이라면 더 이상 새로운 String 객체를 생성
하지 않은 채 기존 리터털을 공유. 따라서 s1과 s2는 동일한 String 객체를 가
리킨다.
문자열의 선언과 생성
01 문자열
4/35
• ==와 != 연산자는 두 문자열의 내용을 비교하는 것이 아니라 동일한 객
체인지 검사
• 예제 : 교재 169p [예제 5-1]
문자열의 비교(1)
01 문자열
5/35
• String 클래스에서 제공하는 문자열 비교 메서드
• 예
• 예제 : 교재 170p [예제 5-2]
문자열의 비교(2)
01 문자열
6/35
• 문자열의 조작
- String 클래스에서 제공하는 메서드
문자열의 비교(3)
01 문자열
7/35
• 예제
- 교재 172p [예제 5-3]
- 교재 173p [예제 5-4]
문자열의 비교(4)
01 문자열
8/35
• 배열(Array)은 동일한 데이터 타입의 집합을 쉽게 처리할 수 있는 데이
터 구조
배열의 개념(1)
02 배열 기초
9/35
• 배열이 필요한 경우 : 5과목의 평균 점수를 구하는 경우
배열의 개념(2)
02 배열 기초
10/35
• 배열의 선언
- 실제는 배열 변수의 선언
• 배열의 선언과 생성
- 실제는 배열 변수의 선언과 초기화
배열의 선언과 생성(1)
02 배열 기초
11/35
• 배열의 선언과 생성 예
배열의 선언과 생성(2)
02 배열 기초
12/35
• 배열 원소의 접근
• 배열의 크기
- 배열이 생성될 때 배열의 크기가 결정
- 배열의 length 필드가 배열의 크기를 나타냄. 예를 들어, scores가 가리키는
배열의 크기는 scores.lengt
• 예제 : 교재 177p [예제 5-5]
배열 원소의 접근과 배열의 크기
02 배열 기초
13/35
• 배열의 배열
• 예
- 학생 3명의 5과목 성적을 처리하는 정수 타입 2차원 배열(3행 × 5열)인
scores
다차원 배열(1)
02 배열 기초
14/35
• 선언과 초기화
• 예제 : 교재 179p [예제 5-6]
다차원 배열(2)
02 배열 기초
15/35
• 처리할 데이터의 개수가 고정된 경우가 아니라면 정적 배열은 자원을
낭비하거나 프로그램을 다시 컴파일
• 자바는 크기가 유동적인 배열을 지원하기 위해 ArrayList 클래스 제공
동적 배열(1)
02 배열 기초
16/35
• ArrayList 객체 생성
• ArrayList 원소 접근
• 예제 : 교재 181p [예제 5-7]
동적 배열(2)
02 배열 기초
17/35
• for~each 반복문 : JDK 5부터 도입된 것으로 for 문을 개선한 방식
• 특정 원소를 나타내기 위한 인덱스를 사용하지 않는다.
• 예제 : 교재 182p [예제 5-8]
배열을 위한 반복문
03 배열 응용
18/35
• 예제 : 교재 183p [예제 5-9]
메서드의 인수로 배열 전달(1)
03 배열 응용
19/35
• 메인 메서드의 매개변수 전달
- 명령창에서의 실행 명령
• 예제 : 교재 185p [예제 5-10]
메서드의 인수로 배열 전달(2)
03 배열 응용
20/35
- 이클립스에서 매개변수 제공
메서드의 인수로 배열 전달(3)
03 배열 응용
21/35
- 명령 창에서 메인 메서드의 인수 사용
메서드의 인수로 배열 전달(4)
03 배열 응용
22/35
• JDK 5부터는 메서드에도 데이터 타입이 같은 가변 개수(variable
length)의 인수 전달 가능
• 한 개의 가변 개수 매개변수만 사용 가능하며 가변 개수 매개변수는
마지막에 위치
• 가변 개수 인수를 가진 메서드를 호출하면 내부적으로 배열을 생성해
처리
• 예제 : 교재 187p [예제 5-11]
가변 개수 인수
03 배열 응용
23/35
• 객체 배열은 객체를 참조하는 주소를 원소로 구성
• 예
- Ball 클래스의 객체로 구성된 배열을 선언하고 초기화
- 생성자를 호출하여 Ball 객체를 생성해야 함
객체의 배열(1)
03 배열 응용
5개의 Ball 객체를 생성하는 것이 아니라5개의 Ball 객체를 참조할 변수를 준비
24/35
• 예제 : 교재 190p [예제 5-13]
객체의 배열(2)
03 배열 응용
25/35
• 예제 : 교재 192p [예제 5-14]
- 변수 n2에는 n2, 변수 n3에는 n3, 변수 m에는 n/d을 대입하는 예제
오류의 종류
04 디버깅
26/35
• 이클립스는 에디터 뷰에 문법 오류는 알려주지만 논리 오류는 알려주지
않음
• 논리 오류는 프로그램 실행 도중에 변수 상태를 추적하는 것이 가장 기
본적인 오류 점검 방식
• 디버그 퍼스펙티브로 이동
디버깅 과정(1)
04 디버깅
27/35
• 디버깅 명령어와 이클립스 단축키
디버깅 과정(2)
04 디버깅
28/35
• 샘플 프로그램 : 교재 194p [예제 5-15]
디버깅 과정(3)
04 디버깅
29/35
• 디버그 퍼스펙티브와 중단점 설정
디버깅 과정(4)
05 문자열, 배열, 디버깅
30/35
• 디버그 퍼스펙티브와 각종 실행 버튼
디버깅 과정(5)
04 디버깅
31/35
• 디버그 퍼스펙티브와 변수 추적
디버깅 과정(6)
04 디버깅
32/35
• 디버그 퍼스펙티브와 실행 결과
디버깅 과정(7)
04 디버깅
33/35
도전 과제
34/35
도전 과제
Q & A
한빛아카데미 35/35