Ch07: Arrays and ArrayLists
Arrays
- 배열은 객체, 즉 참조 자료형이다.
- 원소들은 원시 자료형 또는 참조 자료형 둘다 될 수 있다.
- 배열 안의 모든 원소들의 자료형은 동일해야 한다.
- 배열의 인덱스는
int
형이거나,int
형으로 암묵적으로 변환될 수 있어야 한다. 즉byte
,short
또는char
는 가능하지만,long
은 불가능하다.
Declaring and Creating Arrays
int[] c = new int [12];
int[] c;
c = new int[12];
int[] a, b, c;
// a는 int형 배열 참조 변수이지만 b, c는 int형 변수이다.
int a[], b, c
- 배열 선언시, 각 원소는 기본값으로 초기화된다.
- 원시 자료형 →
0
boolean
→False
- 참조 자료형 →
null
Examples Using Arrays
final
변수는 사용되기 전에 반드시 초기화되어야 하며, 이후 수정될 수 없다.
final int ARRAY_LENGTH = 10;
// 또는
final int ARRAY_LENGTH;
ARRAY_LENGTH = 10;
final
변수가 초기화된 후 수정하려는 시도는 컴파일 에러를 발생시킨다.final
변수가 초기화되기 전 사용하려는 시도는 컴파일 에러를 발생시킨다.
Exception Handling: Processing the Incorrect Response (Cont.)
예외
- 프로그램이 실행하는 동안 발생하는 문제 표시하는 것이다.
예외 처리
- 예외가 발생 시 종료하는 대신에, 문제를 처리한 후 프로그램이 계속 실행할 수 있도록 하는 것이다.
try {
// 예외가 발생할 코드
// 예외가 발생하면 실행되지 않아야 할 코드
}
catch (예외) {
// 예외를 다루는 코드
// 매개 변수는 예외 처리기가 처리하는 예외 타입을 나타낸다.
}
예외 매개 변수의 toString 메소드
try {
++frequency[response[answer]];
} catch (ArrayIndexOutOfBoundsException e) {
// 예외 객체에 암묵적으로 저장된 에러 메시지를 얻어 표시하기 위해
// 암묵적으로 예외 객체의 toString 메소드를 호출한다.
System.out.println(e);
}
Enhanced for Statement
for (parameter : arrayName)
statement;
- 매개 변수는 자료형과 식별자를 가진다.
- 매개 변수의 자료형은 배열 원소의 자료형과 상응해야한다.
- 식별자는 배열의 연속적인 값을 나타낸다.
- arrayName은 반복할 배열이다.
- 배열의 원소를 획득하기 위해서만 사용 가능하고, 원소 수정이 불가능하다.
Passing Arrays to Methods (Cont.)
- 객체는 메소드에 전달될 수 없다.
Caller
int[] array = { 1, 2, 3, 4 };
modifyArray(array);
Callee
public static void modfiyArray(int[] array) {
for (int cnt = 0; cnt < array.length; cnt++) {
array[cnt] *= 2;
}
자바에서 모든 인자에는 값이 전달된다
- 메소드 호출은 두 가지 값의 종류로 메소드에 전달할 수 있다.
- 원시형 값의 복사본
- 객체의 참조값의 복사본
class testClass {
public static void testMethod(int num2, int[] array2) {
...
}
}
...
int num1 = 5;
testClass.testMethod(num1, array1);
...
testClass.testMethod
의 매개 변수로num1
전달된다. →num1
의 값이 복사되어num2
에 저장된다.testClass.testMethod
의 매개 변수로array1
→array1
객체를 참조하는 참조값이array2
에 저장된다. →testClass.testMethod
에서array2
수정 시array1
도 수정된다.
Multidimensional Arrays
int[][] c = new int[3][4];
int[][] d = new int[2][];
d[0] = new int[5];
d[1] = new int[3];
Variable-Length Argument Lists
public static double average(int num, double... numbers) {
...
}
...
average(3, d1, d2, d3);
average(3, d1, d2, d3, d4);
- ...는 매개 변수 리스트의 마지막에 오직 한 번만 가능하다.
- 가변 인자는 자동으로 매개 변수에 의해 참조된 배열에 놓인다.
Class Arrays
Arrays 클래스
- 배열 조작을 위한
static
메소드를 제공한다.sort
binarySearch
equals
fill
- 배열의 원소가 원시 자료형인 경우와 참조 자료형인 경우를 위해, 메소드들은 오버로딩되어 있다.
System 클래스
static
arraycopy
메소드는 한 일차원 배열을 다른 일차원 배열로 복사한다.
// 메소드 예시
import java.util.Arrays;
Arrays.sort(doubleArray);
Arrays.fill(filledIntArray, 7);
System.arraycopy(intArray, 0, intArrayCopy, 0, intArray.length);
boolean b = Arrays.equals(intArray, intArrayCopy);
int location = Arrays.binarySearch(intArray, 5);
Introduction to Collections and Class ArrayList
Collection
- 자바 API에 의해 사전 정의된 데이터 구조이다.
- 인덱스는 0부터 시작한다.
Generic
class Person<T> {
public T info;
}
public class genericTest {
public static void main(String[] args) {
Person<String> p1 = new Person<String>();
Person<StringBuilder> p2 = new Person<StringBuilder>();
}
}
- 클래스 내부에서 사용할 자료형을 외부에서 지정하는 기법이다.
- 클래스 정의 시
info
의 자료형을 확정하지 않는다. - 인스턴스 생성 시 자료형을 지정한다.
ArrayList
import java.util.ArrayList;
...
ArrayList<String> items = new ArrayList<String>();
ArrayList<String> items = new ArrayList<>(); // Java SE7 and higher
...
java.util
패키지의 클래스이다.- 배열 크기가 가변적으로 변하는 선형 리스트이다. 저장 용량을 초과하면, 부족한 만큼 저장 용량을 증가시킨다.
ArrayList
기본 용량은 10이다.
- T는 collection에 저장된 원소의 자료형이다.
- 이러한 종류의 클래스가 제네릭 클래스이다.
- 오직 참조 자료형만이 사용될 수 있다.
- 다양한 메소드를 제공한다.
add
: 원소를 리스트의 마지막에 추가하거나 특정 인덱스에 추가한다.clear
: 모든 원소를 삭제한다.contains
: 특정값을 포함하면true
, 아니면false
를 반환한다.get
: 특정 인덱스의 원소를 반환한다.indexOf
: 특정 원소가 처음 나타나는 인덱스를 반환한다.remove
: 특정 값이 처음 나타나는, 또는 특정 인덱스의 원소를 삭제한다.size
: 저장된 원소 개수를 반환한다.trimToSize
: 현재 원소의 개수로ArrayList
의 용량을 조절한다.
items.add("red");
items.add(0, "yellow");
items.contains("red");
items.get(i);
items.remove("yellow");
items.remove(1);
items.size();
Author And Source
이 문제에 관하여(Ch07: Arrays and ArrayLists), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@scv1702/Ch07-Arrays-and-ArrayLists저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)