본문 바로가기
[ JAVA ]/JAVA

[ Java ] 배열

by 환이s 2022. 12. 4.
CHAPTER 09. 배열 알아가기

 

배열이란?

 

같은 형의 자료가 n개 존재할 경우의 표현법이다. 개수가 정해진 자료형으로, 동일한 자료형의 변수를 한꺼번에 순차적으로 관리할 수 있다.

 

- [] : 인덱스 연산자 사용한다.

- 배열의 위치를 지정하여 자료를 가져온다.

- 모든 배열이 순서는 0부터 시작한다.

 

1 ) 배열 구문

 

  • 자료형[] 배열 이름 = new 자료형[개수];
  • 자료형 배열 이름[] = new 자료형[개수];
  • 자료형[]배열이름 = new 자료형[] { 초기값1,초기값2,~~~}
# Ex

int[]nums = new int[5];
int[]arrs = {1,2,3,4,5,};
Integer[]nums = new Integer[5];
Integer[]nums = new Integer[]{1,2,3,4,5,};

배열 예시

 

2 ) 숫자 1~ 100까지 배열을 사용해서 담아보기. ( int , String )

 

< int > 

 

int[] nums = new int[100];

int len = nums.length;

for (int i = 0; i < len; i++) {
nums[i] = (i + 1);

System.out.println(nums[i]);
}
}

}

 

tip) 출력 값은 자주 사용하므로 함수로 빼주자.

 

arr1

 

< String >

 

String[] strs = new String[100];

int len = strs.length;

for (int j = 0; j < len; j++) {

strs[j] = "strs" + (j + 1);
}
arr2(strs);
}

String

 

3 ) 얕은(shallow) 복사 vs 깊은(deep) 복사

 

# 얕은(shallow) 복사

- 객체 배열의 복사는 항상 Instavce 주소가 복사된다.

(System.arraycopy도 동일하고, 원본이 수정되면 복사본도 함께 변경됨!) --->  people2[i] = people[i];

 

# 깊은(deep) 복사

-완전한 복사를 하고 싶을 경우, 새롭게 Instance를 만들고 값을 복사해야 한다. 

( people2[i] = new Man(people[i].getName());)

 

# 배열 복사

- 기존 배열과 같은 배열을 만들거나 배열이 꽉 찬 경우 더 큰 배열을 만들고 기존 배열 자료를 복사할 수 있다.

Ex) System.arraycopy (src, srcPos, dest, destPos, leagth);

매개 변수  설 명
src 복사할 배열 이름
srcPos 복사할 배열의 첫 번째 위치
dest 복사해서 붙여 넣을 대상 배열 이름
destPos  복사해서 대상 배열에 붙여 넣기를 시작할 첫 번째 위치
length  src에서 dest로 자료를 복사할 요소 개수

 

# 배열의 Loop

- 배열의 처음에서 끝까지 모든 요소를 참조할 때 사용하면 편리한 반복문이다. ( 향상된 for문 )

- for(변수 : 배열 ) { 
    반복 실행문;
}

# for loop 

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

# for each 

for( String s : strArray ) {
    .........
}

 

예시 ) foreach를 사용하여 배열 완성하기. ( 김1수 ~ 김9수 출력하기)

 

< foreach 예시 >

 

foreach 예시
foreach 결과

 

< 얕은(shallow) 복사 vs 깊은(deep) 복사 예시 >

 

예시1

 

출력 결과본


마치며 

 

다음 포스팅에선 다차원 배열과 ArrayList 포스팅을 하겠습니다. 배열은 실무에서도 자주 사용하기 때문에 이해하고 넘어가는 건 필수 !! 

 

728x90

'[ JAVA ] > JAVA' 카테고리의 다른 글

[ Java ] 상속과 다형성  (0) 2022.12.14
[ Java ] 배열 ( ArrayList )  (0) 2022.12.13
[ Java ] 클래스와 객체2  (0) 2022.11.30
[ Java ] 클래스와 객체1  (0) 2022.11.25
[ Java ] Method  (0) 2022.11.23