평행코드

배열과 2차원 배열 본문

Java

배열과 2차원 배열

나의 오류는 누군가 겪었던 오류 2023. 9. 6. 10:32
배열선언과 할당
// 배열 선언

자료형[] 배열명 ;
자료형 배열명[ ] ; 

// 배열 할당

자료형[ ] 배열명 = new 자료형[배열크기];
자료형 배열명[ ] = new 자료형[배열크기];

ex) int[] arr = new int[3];
    int arr[] = new int[3];
배열 초기화 방법
// 인덱스를 이용한 초기화

arr[0] = 1;
arr[1] = 2;

// for문을 이용한 초기화

ex) for(int i = 0; i < arr.length; i++) {
	arr[i] = i;
}

// 선언과 동시에 초기화

ex) int[] arr = {1, 2, 3, 4, 5};
	int[] arr = new int[] {1, 2, 3, 4, 5};
	String fruit[] = {"사과", "포도", "참외"};
배열의복사

1. 얕은 복사 : 원본값을 공유하는 방식(주소공유)

얕은 복사를 하면 저장소 한 개를 공유해서 사용한다.

2. 깊은 복사 : 사본 (새로운 저장공간) 을 생성해서 복사

// 얕은복사

int[] intArr = {1,2,3,4};
int[] intArr2 = intArr;

// 깊은복사

for(int i = 0; i < arr1.length; i++) {

	arr2[i] = arr1[i];

}

System.arraycopy(arr1, 0, arr2, 0, arr1.length);
arr2 = Arrays.copyOf(arr1, arr1.length);
arr2 = arr1.clone();

 

* System.arraycopy() : 매개변수에 따라 복사되는 데이터를 선택할 수 있음

첫번째 : 원본배열명

두번째 : 원본배열 시작인덱스

세번째 : 복사될 배열명

네번째 : 복사될 배열의 시작인덱스

다섯번째 : 복사할 데이터의 수 (길이)

 

2차원 배열

자료형이 같은 1차원 배열의 묶음으로 배열 안에 다른 배열이 존재

2차원 배열은 할당된 공간마다 인덱스 번호 두 개 부여

(앞 번호는 행, 뒷 번호는 열( [ ] [ ] )

배열 선언

자료형[ ][ ] 배열명 ;
자료형 배열명[ ][ ] ;
자료형[ ] 배열명[ ];

배열 할당

자료형[ ][ ] 배열명 = new 자료형[행크기][열크기];
자료형 배열명[ ][ ] = new 자료형[행크기][열크기] ;
자료형[ ] 배열명[ ] = new 자료형[행크기][열크기] ;

ex) int[][] arr = new int[3][4];
    int arr[][] = new int[3][4];
2차원 배열 초기화
인덱스를 이용한 초기화

ex) arr[0][0] = 1;
    arr[1][1] = 2;
    
for문을 이용한 초기화

ex) for(int i = 0; i < arr.length; i++) {
for(int j = 0; j < arr[i].length; j++) {
	arr[i][j] = j;
	}
}

선언과 동시에 초기화

ex) int[][] arr = {{1, 2, 3, 4}, {5, 6, 7, 8}};
int[][] arr = new int[][]{{1, 2, 3, 4}, {5, 6, 7, 8}};
String fruit[][] = {{"사과", "딸기", "석류"},
                   {"바나나", "참외", "레몬"}};