📔 학습한 내용을 정리하기 위해 작성하는 게시글입니다.
배열(array)은 동일한 자료형을 묶어 저장하는 참조 자료형이다.
인덱스(index)
- 자바에서 인덱스는 언제나 0부터 시작하며, 1씩 증가한다. Ex) array 배열의 인덱스[-1]을 출력하면 오류남
- 0을 포함한 양의 정수만을 가질 수 있다.
- 인덱스는 0부터 시작하기 때문에
배열의 길이 - 1
이 인덱스 번호가 된다.- 배열의 값을 저장할 수 있는 공간에 붙은 방 번호
자바에서 8개의 기본 자료형 이외의 모든 자료형은 참조 자료형이다. 대표적인 참조 자료형에는 배열(array), 클래스(class), 인터페이스(interface) 등이 있다.
자료형[] 변수명
자료형 변수명[]
// 자료형[] 변수명 - 권장
int[] a; //int 자료형만 저장 가능
double[] b; //double 자료형만 저장 가능
String[] c; //String 자료형만 저장 가능
// 자료형 변수명[]
int a[];
double b[];
String c[];
배열은 동일한 자료형으로 묶은 참조 자료형이기 때문에 선언 시에
int
,double
과 같은 자료형을 표기한다.
참조 자료형을 초기화할 때는 null(널)값을 사용할 수 있다. (스택 메모리에 위치하는 변수를 초기화하지 않고 출력하면 오류가 발생하므로 반드시 초기화 해주어야 한다.
모든 참조 자료형의 실제 데이터(객체)는 힙 메모리에 생성된다. 힙 메모리에 객체를 생성할 때에는 new 키워드를 사용한다.
new 자료형[배열의 길이]
new int[3]; //정수 자료형 3개를 포함할 수 있는 배열 객체 생성
new String[3]; //실수 자료형 3개를 포함할 수 있는 배열 객체 생성
new Stirng[10]; //문자열 자료형 10개를 포함할 수 있는 배열 객체 생성
new int[]; //객체의 크기를 지정하지 않았으므로 오류 발생
배열을 생성할 때에는 new int[3], new String[30]과 같이 배열의 길이를 지정해야 한다. (배열의 길이를 지정하지 않으면 오류가 발생한다.)
1) 변수 선언과 값(참조 자료형은 객체)의 대입을 한 번에 작성
자료형[] 변수명 = new 자료형[배열의 길이];
int[] a = new int[3];
2) 변수 선언과 값의 대입을 따로 작성
자료형[] 변수명;
변수명 = new 자료형[배열의 길이];
int[] a;
a = new int[3];
//1차원 배열의 2가지 선언 방법 방법과 다양한 배열 선언 예
public class ArrayDefinition {
public static void main(String[] args) {
//배열의 선언 방법 1 - 자료형 뒤에 대괄호({}) 표기
int[] array1 = new int[3];
int[] array2;
array2 = new int[3];
//배열의 선언 방법 2 - 변수명 뒤에 대괄호({}) 표기
int array3[] = new int[3];
int array4[];
array4 = new int[3];
//다양한 배열 선언(기본 자료형 배열, 참조 자료형 배열)
boolean[] array5 = new boolean[3];
int[] array6 = new int[5];
double[] array7 = new double[7];
String[] array8 = new String[9];
}
}
배열 객체에 값 대입하기
참조 변수명[인덱스] = 값;
int[] a = new int[3];
a[0] = 3;
a[1] = 4;
a[2] = 5;
배열 객체 값 읽어오기
참조 변수명[인덱스];
System.out.println(a[0]); //3
System.out.println(a[1]); //4
System.out.println(a[2]); //5
public class ReadArrayData {
public static void main(String[] args) {
int[] array = new int[] {3, 4, 5, 6, 7};
for(int i = 0; i < array.length; i++)
System.out.print(array[i] + " ");
System.out.println();
}
}
반복의 횟수를 결정하기 위해서는 배열의 길이를 알아야 한다. 자바에서는 '배열 참조 변수.length'로 배열의 길이를 구할 수 있다.
배열 참조 변수.length
int[] a = new int[] {3, 4, 5, 6, 7};
System.out.println(a.length); //5
배열이나 컬렉션 등의 집합 객체에서 원소들을 하나씩 꺼내는 과정을 반복하는 구문이다. 집합 객체의 원소들을 출력할 때 사용한다.
for(원소 자료형 변수명 : 집합 객체) { }
int[] a = new int[100];
a[0] = 1, a[1] = 2, ..., a[99] = 100;
for(int k : a) {
System.out.println(k);
}
System.out.println(Arrays.toString(1차원 배열 참조 변수))
import java.util.Arrays;
//1차원 배열의 원소 값 출력
public class ReadArrayData {
public static void main(String[] args) {
int[] array = new int[] {3, 4, 5, 6, 7};
//배열의 길이 구하기
System.out.println(array.length);
//출력하기1
//배열의 인덱스 번호를 사용해 배열의 모든 원소 값을 1개씩 출력
System.out.print(array[0] + " ");
System.out.print(array[1] + " ");
System.out.print(array[2] + " ");
System.out.print(array[3] + " ");
System.out.print(array[4] + " ");
System.out.println();
//출력하기2 - for문 사용
for(int i = 0; i < array.length; i++)
System.out.print(array[i] + " ");
System.out.println();
//출력하기3 - for-each문 사용
for(int k : array) {
System.out.print(k + " ");
}
System.out.println();
//출력하기4 - Arrays 클래스의 toString() 메서드 사용
System.out.println(Arrays.toString(array));
}
}
<Do it! 자바 완전 정복>
<이재환의 자바 프로그래밍 입문>
http://www.tcpschool.com/java/java_array_oneDimensional