JAVA_Array,배열,다차원배열

호근·2022년 12월 1일
0

java

목록 보기
7/35
post-thumbnail

배열

- 연속된 공간에 값을 나열시키고 각 값에 인덱스를 부여해 놓은 자료구조이다.
- 같은 타입의 값만 관리한다.
- 선언된 배열의 길이는 늘리거나 줄일 수 없다.

배열은 참조변수이다.

ex)
int[] arr = new int[4];
=> 배열을 생성하면, Heap 영역에 할당된다.
Heap 영역에 생성된 해당 객체(배열)의 번지는 메소드 영역(Method Area)과 스택영역(Stack Area)의 상수(Constant)와 변수에서 참조할 수있다.

* 얕은 복사(Shallow Copy)

하나의 객체를 두 레퍼런스가 참조하도록 객체의 '주소'를 복사하는 것.
※ 얕은 복사를 통해 복사한 객체의 값이 변경된다면, 기존의 객체도 변경됩니다.



* 참조값이 아닌 실제값을 복사해야하는 경우에는 깊은 복사가 필요합니다.

* 깊은 복사(Deep Copy)

새로운 배열 객체를 생성하여 기본 배열의 데이터를 복사하는 것.

1) 복사생성자 또는 복사팩터리를 이용하여 복사
2) 직접 객체를 생성하여 복사 (복사 생성자)
3) Cloneable을 구현하여 clone()재정의
배열 생성
- 타입[] 변수 = new 타입[생성될 배열의 길이];
- 타입[] 변수;

배열 길이

	배열에 저장할 수 있는 항목의 수를 말함.
    배열의 길이를 얻으려면 .length 사용
    
    배열 길이는 주로 for문을 사용해서 전체 배열항목을 반복할 때 사용된다.

배열 합치기

		int[] iArr = {1,3,5,7,9};
		int[] iArr2 = {2,4,6,8,10};
		
		// 두 배열의 값을 합쳐주세요.

		
		int[]iArr3 = new int[iArr.length+iArr2.length]; // 합친 값을 저장할 배열 생성
        
		// iArr3에 iArr의 0번 인덱스부터 마지막 인덱스까지 차례로 넣기
		
        for(int i=0; i < (iArr3.length - iArr.length); i++) {
			iArr3[i] = iArr[i];
		} System.out.println(Arrays.toString(iArr3)); // 확인
		// iArr3의 iArr2의 넣기
		for(int i=iArr.length+1; i < (iArr3.length); i++) { // i는 iArr 인덱스 개수 + 1 부터 iArr3의 인덱스 개수 까지 1씩증가
			
			iArr3[i] = iArr2[i-iArr.length]; // iArr3[i] => iArr3[6] | iArr2[i-Arr.length] => iArr2[6-1]
		}System.out.println(Arrays.toString(iArr3));
        


	*for문 잘쓰는게 더 중요한듯 하다.

다차원 배열

	- n차원 배열은 n-1차원 배열을 여러개 보관하는 배열이다.
    
    - 표현방식 
    int[][] 변수명; => 권장
    int[] 변수명[];
    int 변수명[][];
    
    

예제)
배열 자르기.
배열 지우기.
원하는 인덱스1 부터 인덱스 2까지의 값 출력하기

profile
22.11.28 ~

0개의 댓글