배열 (Arrays)
배열의 특성
- 하나의 변수로 여러 개의 값을 다룰 수 있음
- 동일 자료 형만 다룰 수 있음
- 한번 생성한 배열의 크기는 변하지 않음.
- 배열에 속한 값은 메모리에 연속으로 위치함(중요특성!)
배열의 선언
- 일반적으로 자료형[] 변수명; 으로 선언함
- 초기화 하지 않고 선언만하면 메모리는 잡히지 않음
int intval;
int[] integers;
// int cStyleInteger[]; // 배열선언가능하나 가독성때문에 안쓰임//쓰지마
long[] longs;
char[] chars;
String[] strings;
배열의 초기화
new 자료형[배열의크기] 로 초기화 함
혹은 바로 {}안에 값을 입력하여 초기화 하기도함
// 배열의 생성과 초기화 integers = new int[10]; // 선언된 배열을 초기화 int[] integers2 = new int[10]; // 선언과 동시에도 가능 integers2[0] = 5; integers2[1] = 10; integers2[3] = 9; // 값을 넣을 때 순차적으로 하지 않아도 된다. System.out.println(integers2[0]); System.out.println(integers2[1]); System.out.println(integers2[2]); // 0으로 자동으로 초기화// 입력없으면=0 System.out.println(integers2[3]); System.out.println(""); int[] integers3 = new int[]{5, 2, 3, 6, 12, 4}; // 바로 입력할 때는 길이 입력 안해도 된다. System.out.println(integers3[0]); System.out.println(integers3[1]); System.out.println(integers3[2]); System.out.println(integers3[3]); System.out.println(integers3[4]); System.out.println(integers3[5]); // System.out.println(integers3[6]);// ArrayIndexOutOfBoundsException 오류 발생 //배열 사용할 때에는 선언해 준 길이까지만 접근해야 한다. int[] integers5 = {1, 4, 5, 23, 0}; // new int[] 안 붙여도 된다.
반복문을 통한 배열에 접근
- 반복문을 통하여 배열을 초기화 할 수 있음
- 또한 반복문을 통해 배열을 출력할 수 있음
- 또한 Enhaced for문을 통해도 배열에 접근할 수 있음
// 배열을 반복문으로 접근
float[] floats = new float[5];
for (int i = 0; i < floats.length; i++) { // for문을 이용한 초기화, new할때도 초기화지만 처음값넣을때도 초기화//혼용 사용
floats[i] = (float) (i * 0.25);
}
// for문을 통한 배열 출력
for (int i = 0; i < floats.length; i++) {
System.out.println(floats[i]);
}
// Enhanced for, for each문이라고도 함
// 배열에 접근하는 다른 방법
// for(자료형 변수명 : 배열명){ 배열0부터 끝까지 값을 floatVal에 대입해줌)
for(float floatVal: floats){
System.out.println(floatVal);
}
// 밑에 for문과 같은 역할을 함
for(int i = 0 ; i < floats.length; i++){
float floatVal = floats[i];
System.out.println(floatVal);
}
배열의 크기 변화
- 배열은 메모리를 연속적으로 사용하기에 배열의 크기를 수정할 수 없음
- 그래서 배열의 크기를 변경하기 위해서는 새로운 배열을 생성해서 대입해주어야함 함
- 또한 그것을 위한 arraycopy 메서드가 존재함
int [] src = {1, 2, 3, 4, 5};
int [] dst = new int[10];
for(int i = 0; i< src.length; i++){
dst[i] = src[i];
}
for(int integer : dst){
System.out.println(integer);
}
// 배열 크기변경은 빈번하기에 크기변경 함수 존재
int[] src2 = {1, 2, 3, 4, 5};
int[] dst2 = new int[10];
System.arraycopy(src2,0,dst2,0,src2.length);//arraycopy(어디에서,몇번째부터, 어디로, 몇번째부터,어디까지)
for(int integer: dst2){
System.out.println(integer);
}
'Java' 카테고리의 다른 글
[Java]2_8_다차원 배열 (N-D Arrays) (0) | 2020.07.31 |
---|---|
[Java] 2_7_1_배열 연습 (0) | 2020.07.31 |
[Java] 2_6_2_반복문 예제 (0) | 2020.07.31 |
[Java] 2_6_1_반복문 연습 (0) | 2020.07.31 |
[Java] 2_6_반복문 (Loops) (0) | 2020.07.31 |