배열
: 같은 타입의 데이터를 연속된 공간에 나열시키고, 각 데이터에 인덱스(index)를 부여해놓은 자료구조.
인덱스(index)
: 배열에서의 위치를 가리키는 숫자
1) 리터럴 방식
: 배열에 저장될 값의 목록이 있는 경우 사용
데이터 타입[] 변수{값0, 값1, 값2, ...};
ex) 배열의 리터럴 방식 예시
public class ArrayEx01 {
public static void main(String[] args) {
int[] nums = {4,5,6};
System.out.println("nums[0] = " + nums[0]); // nums[0] = 4
System.out.println("nums[1] = " + nums[1]); // nums[1] = 5
System.out.println("nums[2] = " + nums[2]); // nums[2] = 6
}
}
2) new 객체생성 방식
: 배열에 저장될 값의 목록이 없지만, 미리 배열을 만들 경우 사용.
1. 타입[] 변수 = new 타입[길이];
2. 타입[] 변수 = null;
변수 = new 타입[길이];
new 연산자로 배열을 처음 생성할 경우 자동으로 기본값으로 초기화 된다.
ex) 배열의 new 객체생성 방식 예시
public class ArrayEx02 {
public static void main(String[] args) {
int[] nums = new int[3]; // 3개의 공간 생성
nums[0] = 4;
nums[1] = 5;
System.out.println("nums[0] = " + nums[0]); // nums[0] = 4
System.out.println("nums[1] = " + nums[1]); // nums[1] = 5
System.out.println("nums[2] = " + nums[2]); // nums[2] = 0 --> 인덱스2의 값은 초기값이므로 0
}
}
다차원 배열
: 2차원이상의 배열로써 행과 열로 구성된다.
ex) 다차원 배열 예시
public class ArrayEx03 {
public static void main(String[] args) {
// 리터럴 방식
int[][] nums = { {1,2,3}, {4,5,6} };
System.out.println(nums[0][0]); // 1
System.out.println(nums[0][2]); // 3
System.out.println(nums[1][1]); // 5
// new 객체생성 방식
int[][] nums2 = new int[2][2];
nums2[0][0] = 1;
nums2[0][1] = 2;
nums2[1][0] = 3;
nums2[1][1] = 4;
System.out.println(nums2[1][0]); // 3
}
}
참조 타입(클래스, 인터페이스) 배열은 각 항목에 객체의 주소를 가지고 있다. 따라서 배열 항목간의 비교를 위해서는 ==
연산자 대신 equals( )
메서드를 사용해야한다.
String[] strArray = new String[3];
strArray[0] = "Java";
strArray[1] = "Java";
strArray[2] = new String("Java");
System.out.println(strArray[0] == strArray[1]); // true (같은 객체를 참조)
System.out.println(strArray[0] == strArray[2]); // false (다른 객체를 참조)
System.out.println(strArray[0].equals(strArray[2])); // true (문자열이 동일)
출처
- 이지업 컨텐츠 내의 데어프로그래밍 자바강의