언어(Language)/Java

[Java] 배열

송기동 2023. 8. 4. 14:01
728x90

배열 (Array)

- 연관된 데이터를 모아서 통으로 관리하기 위해서 사용하는 데이터 타입

- 여러개의 데이터를 하나의 변수에 저장하기 위한 것

- 정적인 크기를 가지며, 한 번 생성된 후에는 크기를 변경할 수 없음

- 메모리 상에 연속된 공간을 차지, 각 요소는 인덱스를 통해 접근

- 객체 배열의 메모리 공간에는 heap 메모리에 대한 주소 값이 할당

 

# 인덱스

- 인덱스연산자 : [ ]

- 0부터 시작해서 배열의 크기보다 하나 작은 값까지의 범위를 가짐

 

# 배열 길이 반환

- 배열명.length

 

# 배열 선언

자료형[] 배열명 = new 자료형[배열크기];
ex) int[] numbers = new int[3]; // 크기가 3인 int 배열 생성

 

# 배열 값 초기화

배열명[인덱스번호] = 값;
ex) numbers[0] = 10;
    numbers[1] = 20;
    numbers[2] = 30;

 

# 배열 리터럴을 사용하여 값 초기화

자료형[] 배열명 = {요소1, 요소2, 요소3 ...};
ex) int[] numbers = {10, 20, 30, 40, 50}; // 배열 리터럴을 사용하여 배열을 초기화

 

# 배열의 요소에 접근할 때

자료형 변수명 = 배열명[인덱스번호];
ex) int firstElement = numbers[0]; // 첫 번째 요소에 접근하여 값을 가져옴

배열 순회

- 배열의 각 요소를 하나씩 방문하면서 작업을 수행하는 과정

# for문을 사용한 순회

int[] numbers = {10, 20, 30, 40, 50};

for (int i = 0; i < numbers.length; i++) {
    System.out.println("요소 " + i + ": " + numbers[i]);
}

 

# foreach문을 사용한 순회

int[] numbers = {10, 20, 30, 40, 50};

for (int number : numbers) {
    System.out.println("요소: " + number);
}

이중 배열

- [ i ] 는 행

- [ j ] 는 열

자료형[][] 배열명 = {
    {값1, 값2, ...},
    {값1, 값2, ...},
    ...
};
 
배열명[i][j]
----------------------------------------------------------------
ex)
// 이중 배열 초기화
int[][] twoDimensionalArray = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} };

// 이중 배열 요소에 접근
int element = twoDimensionalArray[1][2]; // 7

# 예시

package ch09;

public class ArrayMainTest {

	public static void main(String[] args) {

		// 배열 이란
		// **연관된 데이터를 모아서 통으로 관리하기 위해 사용하는 데이터 타입니다.**
		// 사용하는 방법
		int[] arr1; // 변수에 선언(데이터타입이 int가 아니라 int 배열입니다.)
		arr1 = new int[2]; // 배열의 초기화는 반드시 크기가 먼저 지정해주어야 사용 가능하다.)
		// 배열의 크기도 생각을 해보자

		double[] arr2 = new double[2]; // 선언과 동시에 초기화

		// 값을 넣는 방법
		arr1[0] = 100;
		arr1[1] = 1000;
		// 인덱스의 순서는 0번부터 시작한다.

		System.out.println(arr1[0]);
		System.out.println(arr1[1]);

		// 주의 : 배열의 길이(크기)와 인덱스의 번호는 다르다.
		// 공식 --> 배열의 인덱스의 번호는 n-1
		// System.out.println(arr1[2]); <-- 오류발생

		arr2[0] = 10.0;
		arr2[1] = 20.0;
		System.out.println(arr2[0]);
		System.out.println(arr2[1]);
	} // end of main

} // end of class
100
1000
10.0
20.0
package ch09;

public class ArrayMainTest2 {

	public static void main(String[] args) {
 
		// 변수는 크게 몇가지가 존재한다고 하였나요?
		// 기본데이터 타입, 참조 타입
		
		char[] ch1 = new char[10]; // <-- 기본데이터 타입(연관된 데이터)
		ch1[0] = 'H'; 
		ch1[1] = 'E'; 
		ch1[2] = 'L'; 
		ch1[3] = 'L'; 
		ch1[4] = 'O'; 
		System.out.println(ch1[4]);
				
		String[] strings = new String[5];
		strings[0] = "안녕반가워";
		strings[1] = "안녕반가워";
		strings[2] = "안녕반가워";
		System.out.println(strings[0]);
	} // end of main

} // end of class
O
안녕반가워

728x90