Power Java 제10장 배열.

Slides:



Advertisements
Similar presentations
멘토링 2 주차 장 프로그래밍을 위한 자바의 자료형  값이 변하지 않는 상수  메모리 기억공간인 변수.
Advertisements

5 장 조건과 반복 ②. Contents Counting and Looping [while 문 사용 ] Powers of 2 [while 문 사용 ] More Guessing [do 문 사용 ] Election Day [do 문 사용 ] Finding Maximum &
명품 JAVA Programming 제 3 장 반복문, 배열, 예외처리.
어서와 Java는 처음이지! 제3장선택과 반복.
제 7주 2015년 1학기 강원대학교 컴퓨터학부 담당교수: 정충교
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
Recursion SANGJI University KO Kwangman
IntArray[0] int length 5 intArray 객체 제 3 장 반복문, 배열, 예외처리.
객체지향 프로그래밍.
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
7장 배열 ②.
어서와 Java는 처음이지! 제4장 배열.
Chapter 02 JAVA 프로그래밍 시작하기 01 실무에서 사용하는 JAVA 개발 환경 02 JAVA 프로그램 작성
Java Presentation 중간 시험2 풀이
제 4장 문 장 배정문 혼합문 제어문 표준 입출력.
10장 예외 Lab 10-1.
어서와 Java는 처음이지! 제15장 제네릭과 컬렉션. 어서와 Java는 처음이지! 제15장 제네릭과 컬렉션.
자바란 무엇인가? JDK의 다운로드 및 설치 방법 Hello, Java 프로그램의 작성 자바 프로그램의 작동 원리
윤 홍 란 제3장 클래스와 객체의 사용-1 윤 홍 란
16강. 자바 빈 빈 이란? 빈 만들기 빈 관련 액션 태그(useBean, getProperty, setProperty)
2주 실습강의 Java의 기본문법(1) 인공지능연구실.
Chapter 02 자바 기본구조 자바 프로그래밍의 기초적인 문법을 소개
[INA470] Java Programming Youn-Hee Han
명품 JAVA Programming 제 7 장 제네릭과 컬렉션.
명품 JAVA Essential.
명품 JAVA Essential.
명품 JAVA Essential.
명품 JAVA Programming 제 4 장 클래스와 객체.
Power Java 제4장 자바 프로그래밍 기초.
[INA470] Java Programming Youn-Hee Han
10장 객체-지향 프로그래밍 II ©창병모.
Choi, Namseok Java 기초 (Java의 제어문과 배열) Choi, Namseok
Power Java 제15장 예외 처리 (Exception Handling).
명품 JAVA Essential.
명품 Java Programming.
윤 홍 란 4 장 클래스 작성 윤 홍 란
Power Java 제7장 클래스와 객체.
5장 조건과 반복 ①.
인터페이스(Interfaces) 강원대학교.
주소록 프로그램.
7장 배열 ①.
6장 객체-지향 설계 ①.
제 4주 2014년 1학기 강원대학교 컴퓨터학부 담당교수: 정충교
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
12장 문자열 12.1 문자열의 개요 12.2 String 클래스 12.3 StringBuffer 클래스.
5장 조건과 반복 ②.
제2장 데이터 및 수식.
6장 객체-지향 설계 ①.
어서와 Java는 처음이지! 제4장 배열 IT응용시스템공학과 김형진 교수.
DataScience Lab. 박사과정 김희찬 (월)
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
WAP Java Seminar
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
메소드와 클래스 정의 및 문제 풀이 Method and Class Define and Problem Solve
제 2장 어휘구조와 자료형 토 큰 리 터 럴 주 석 자 료 형 배 열 형.
프로그래밍 개론 Ⅰ 제 1장 . 서론 ①.
[INA470] Java Programming Youn-Hee Han
컴퓨터공학실습(I) 3주 인공지능연구실.
Java IT응용시스템공학과 김형진 교수 5장. 객체지향 개념 public class SumTest {
JA A V W. 04.
자바 5.0 프로그래밍.
5장 조건과 반복 ①.
Java 3장. 자바의 기본 구조 I : 변수, 자료형, 연산자 public class SumTest {
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
자바 5.0 프로그래밍.
C# 10장. 참조형.
컴퓨터 프로그래밍: 실습 1 제 1장 . 서론.
Java 5장. 객체지향 개념 public class SumTest {
1. 객체-지향 프로그래밍.
Presentation transcript:

Power Java 제10장 배열

이번 장에서 학습할 내용 자바에서 배열은 객체로 취급됩니다. 배열의 선언 배열의 사용 배열과 메소드 객체들의 배열 2차원 배열 정렬과 탐색

배열의 개념 배열(array): 같은 타입의 변수들의 모임

배열을 만드는 절차 먼저 배열 참조 변수부터 선언 int[] numbers; // 배열 참조 변수 선언 배열을 new 연산자를 사용하여서 생성 numbers = new int[6]; // 배열 객체 생성 int[] numbers = new int[6];

배열 예제

또 다른 배열 선언 방법 int[] values;// ① 자바 방식 int values[];// ② C언어 유사 방식 배열 초기화문 int[] values = { 10, 20, 30}; // []에 크기 넣을 수 없음 배열 참조 변수 선언, 배열 동적 생성, 초기화 동시 실행

중간 점검 문제 int형의 100개의 원소를 가지고 array로 참조되는 배열을 생성하는 문장을 써라. 2. 10개의 원소를 가지는 배열에서 올바른 인덱스 값의 범위는? 3. 만약 배열의 인덱스가 올바르지 않으면 어떻게 되는가? 4. { 1.2, 3.1, 6.7 }의 값으로 초기화되는 double형 배열을 생성하는 문장을 작성하시오.

배열의 사용

배열의 사용

배열의 크기는 length라는 필드로 알 수 있습니다. for(int i=0; i < numbers.length; i++) numbers[i] = (int)(Math.random()*1000); 배열의 크기는 length라는 필드로 알 수 있습니다. String은 length()가 메소드임!

for-each 루프

// AS-IS : for (int i = 0; i < a // AS-IS : for (int i = 0; i < a.length; i++) {     doSomething(a[i]); } // TO-BE : for (Element e : elements) {     doSomething(e); }

예제 String 배열 s

for each 루프를 사용할 수 없는 경우 배열 원소의 값을 변경하는 경우 역순으로 배열을 처리하는 경우 일부 원소만을 처리하는 경우 하나의 반복문에서 두 개 이상의 배열을 처리하는 경우  전통적인 for 문 사용!!

사용자가 배열의 크기를 지정 동적 배열 생성

중간 점검 문제 int형 정수를 저장하고 있는 배열 array의 모든 원소의 값을 두배로 만드는 반복 루프를 작성하라. 2. 사용자에게 배열의 크기를 받아서 double형 배열을 생성하는 문장을 작성하라. 3. for-each와 전통적인 for 루프를 비교하라. 4. 하나의 배열을 다른 배열로 복사하는 반복 루프를 작성하라.

배열을 메소드의 매개 변수로 전달 call 배열참조변수 복사!

예제(사용자 입력값의 평균)

예제

메소드의 반환값으로 배열 반환

중간 점검 문제 1. 배열이 메소드로 전달되면 어떤 값이 전달되는 것인가? 2. 배열 원소가 전달되는 경우와 배열 전체가 전달되는 경우를 비교하여 차이점을 설명하라. 3. int형 배열을 전달받아서 배열의 각 원소를 하나 증가시키는 메소드를 작성하시오.

객체들의 배열 객체들의 배열에서는 객체에 대한 참조값만을 저장 Car[] cars = new Car[5];

객체들의 배열 각 원소에 들어가는 객체는 따로 생성하여야 한다. cars[0] = new Cars();

예제

예제

중간 점검 문제 은행 계좌를 나타내는 클래스 BankAccount를 가정하자. BankAccount는 잔액만을 가지고 있다. 3개의 원소를 가지는 BankAccount의 배열을 생성하고 각 배열 원소를 BankAccount 객체로 초기화하라. BankAccount[] bank = new BankAccount[3]; for(int i =0; i < bank.length; i++) bank[i] = new BankAccount(); 2. 객체들의 배열을 메소드로 전달하면 무엇이 전달되는가? 배열 참조 변수 전달

2차원 배열

2차원 배열의 초기화와 크기 열의 개수

2차원 배열 매개 변수

Ragged Array(톱니형 배열) int[][] raggedArray = new int[3][]; P. 267 참조

배열의 응용: 정렬(Sorting) 선택 정렬: 최소값을 정렬되지 않은 첫번째 원소와 교환

선택 정렬 코드

배열의 응용: 이진 탐색

이진 탐색

이진 탐색

중간 점검 문제 선택 정렬에서 가장 작은 값은 몇 번이나 교환되는가? 2. 1024개의 원소가 있는 배열을 이진 탐색할 때 최대 몇 번의 비교가 필요한가? 3. 순차 탐색과 이진 탐색을 비교하라. 순차 탐색이란 배열의 첫 번째 원소부터 순차적으로 비교하여 탐색하는 알고리즘이다.

LAB 1. 사용자로부터 정수를 입력받아서 배열에 저장하고 출력하는 프로그램을 작성하여 보자. class TestArray { public static void main(String args[]) Scanner scan = new Scanner(System.in); // 10개의 정수를 저장할 수 있는 배열을 선언하고 생성하라. // 사용자로부터 정수를 받아서 배열에 저장하는 반복루프 // 배열에 저장된 정수를 출력하는 반복 루프 }

2. 배열에 저장된 정수를 출력할 때, for-each 반복 구조를 사용하여 보라. 3. 배열에 저장된 정수를 역순으로 출력하여 보라.

LAB 2. 사용자가 입력한 문자열에서 각각의 문자들이 나타나는 횟수를 계산하는 프로그램을 작성하여 보자. class CountLetter { public static void main(String args[]) Scanner scan = new Scanner(System.in); // 26개의 정수를 저장할 수 있는 배열 count를 선언하고 생성하라. __________________________________________ System.out.println("문자열을 입력하시오 : “); String buffer = scan.nextLine(); // 각 문자가 등장하는 회수를 계산한다. for(int i; i< buffer.length();i++) char ch = buffer.charAt(i); count[ch-'a']++; } // 배열에 저장된 횟수를 출력하는 반복루프 ___________________________________________

LAB 3. 배열에 대하여 실습하여 보자. 회사에서 직원들을 관리하는 프로그램을 작성하여보자. 직원들은 이름, 주소, 연봉, 전화번호를 가지고 있다. 직원은 Employee클래스로 표현된다. 회사 전체의 직원은 Employee의 배열 안에 저장된다. 1. 먼저 Employee클래스를 다음과 같이 작성하여 보자.

class Employee { String name; // 직원이름 ; // 주소 ; // 연봉 ; // 전화번호 // 각각 필드에 대하여 getter와 setter 메소드를 작성하라. .......... // toString() 메소드를 작성하여 본다. public String toString() }

2. Employee 클래스를 테스트하기 위하여 클래스를 하나 더 작성하여 보자. class TestEmployee { public static void main(String args[]) Scanner scan = new Scanner(System.in); // employee 배열 참조 변수 emp를 선언한다. ; // 크기가 2인 employee 배열을 생성한다. ; // 사용자로부터 데이터를 받아서 배열에 추가하여 본다. scan.next()로 이름, 주소, 연봉, 전화번호 입력 .... // // 배열에 저장된 모든 데이터를 출력한다. }

Q & A