배열

김나영·2023년 6월 11일
0

Java 문법 종합반

목록 보기
5/21

1. 배열 선언

1) 타입[] 변수;

int[] intArray; // 정수 배열
long[] longArray;
double[] doubleArray; // 실수 배열
char[] charArray; // 문자 배열
String[] stringArray; // 문자열 배열

2) 타입 변수[];

int intArray[]; // 정수 배열
long longArray[];
double doubleArray[]; // 실수 배열
char charArray[]; // 문자 배열
String stringArray[]; // 문자열 배열

3) 배열 생성

int[] intArray = new int[3]; // {0, 0, 0}
boolean[] boolArray = new boolean[3]; // {false, false, false}
String[] stringArray = new String[3]; // {"", "", ""}

3-1) 배열 선언 먼저

// 배열 선언 먼저! -> 나중에 초기화
int[] intArray2;
intArray2 = new int[3]; // {0, 0, 0}

2. 배열 순회

1) 단건 조회

// 생성한 배열을 '순회' -> 배열의 값을 하나씩 뽑아서 조회한다.
// (1) 단건 조회
int[] intArray = new int[3]; // {0, 0, 0}
System.out.println(intArray[1]); // 0 출력

2) 다건 조회(important!!)

int[] intArray2;
intArray2 = new int[3]; // {0, 0, 0}
for (int i = 0; i < intArray2.length; i++) {  // length : 길이를 구하는 메서드
  System.out.println(intArray2[i]);
} // 0, 0, 0 출력

3. 배열 초기화

1) 배열에 특정 값 대입해서 선언

int[] intArray = {1, 2, 3, 4, 5};
String[] stringArray = {"a", "b", "c", "d"};

2) for문을 통해서 대입

for (int i = 0; i < intArray.length; i++) {
  intArray[i] = i;

3) 다건 출력

int[] intArray = {1, 2, 3, 4, 5};
     for (int i = 0; i < intArray.length; i++) {
        intArray[i] = i;
     }
     // 다건 출력
    for (int i = 0; i < intArray.length; i++) {
       System.out.println(intArray[i]); // 0,1,2,3,4 출력

4) 향상된 for문을 통한 배열 출력

int[] intArr = {10, 20, 30, 40, 50};
for(int item : intArr) {
   System.out.println(item); // 10,20,30,40,50 출력
}

5) 배열의 주소를 모두 값은 값으로 초기화

Arrays.fill(intArr, 1); //배열의 모든 값을 1로 초기화
for(int item : intArr) {
   System.out.println(item); // 1,1,1,1,1 출력
        }

4. 배열 초기화 방법

  1. 중괄호{} 를 사용해서 초기화

  2. 반복문 for문을 사용해서 초기화 (또는 향상된 for문)

  3. Arrays.fill 메소드를 사용해서 초기화


5. 복사

1) 얕은 복사

  • 주소값만 복사되고 실제값은 1개로 유지되는 것
int[] a = { 1, 2, 3, 4 };
int[] b = a; // 얕은 복사
            // a와 b는 똑같은 별도 영역에 주소를 바라보고 있음
b[0] = 3; // b 배열의 0번째 순번값을 3으로 수정했습니다. (1 -> 3)
System.out.println(a[0]); // 출력 3  <- a 배열의 0번째 순번값도 3으로 조회됩니다.

2) 깊은 복사

  • 새로운 배열을 똑같이 만들고 싶을때 사용

  • 실제 값을 가지고 있는 배열의 기본형 값을 꺼내서 복사해주면 됨

  • 반복문 for 문 을 통해서 하나씩 꺼내서 복사해주는 방법과 여러 메서드를 사용하는 방법이 있음

int[] a = { 1, 2, 3, 4 };
int[] b = new int[a.length];  // a의 길이만큼 가지는 새로운 배열
                             // 0으로 다 초기화
for (int i = 0; i < a.length; i++) {
    b[i] = a[i]; // 깊은 복사
                 // 주소값이랑 상관없이 b라는 배열은 a가 가지고 있는 요소들로 이루어진 별도의 배열이 생성이 된다.
}
b[0] = 3; // b 배열의 0번째 순번값을 3으로 수정했습니다. (1 -> 3)
System.out.println(a[0]); // 출력 1 <- 깊은 복사를 했기때문에 a 배열은 그대로 입니다.

2-1) clone() 메서드

int[] a = { 1, 2, 3, 4 };
int[] b = a.clone(); // 가장 간단한 방법입니다. 
// 하지만, clone() 메서드는 2차원이상 배열에서는 얕은 복사로 동작합니다!!
  • a.clone()을 하면 a를 완전히 복사 하지만 주소는 다른 걸 가지고 옴

  • 즉, b 배열은 다른 주소값을 갖는 배열을 리턴 받을 수 있음

2-2) Arrays.copyOf() 메서드

import java.util.Arrays;
public class Main {
	public static void main(String[] args) {
		int[] a = { 1, 2, 3, 4 };
		int[] b = Arrays.copyOf(a, a.length); // 배열과 함께 length값도 같이 넣어줍니다. => 새로운 배열을 리턴해줌 => a와 b는 완전히 다른 종류의 배열이 됨
        a[3] = 0;
        System.out.println(a[3]); // 0 출력
        System.out.println(b[3]); // 4 출력
	}
}

0개의 댓글