프로그래밍/JAVA
[JAVA] 배열 사용법
노력의천재
2020. 9. 3. 00:37
/* 20200903 - 자바 배열의 개념, 사용법 스터디 */
import java.util.Arrays;
import java.util.Scanner;
import java.util.stream.IntStream;
public class MainClass {
public static void main(String[] args) {
// 배열 선언 후 초기화
int[] arr1 = new int[5];
IntStream.range(0, arr1.length).forEach(i -> {
arr1[i] = 100 * (i + 1);
System.out.println("arr1[" + i + "] : " + arr1[i]);
});
// 배열 선언과 동시에 초기화
int[] arr2 = {10, 20, 30, 40, 50};
IntStream.range(0, arr2.length).forEach(i -> {
arr2[i] = 10 * (i + 1);
System.out.println("arr2[" + i + "] : " + arr2[i]);
});
// ArrayIndexOutOfBoundsException
// System.out.println(arr2[6]);
// 배열을 이용한 학사관리
String[] name = {"박찬호", "이승엽", "박병호", "이병규", "류현진"};
int[] score = new int[5];
Scanner scanner = new Scanner(System.in);
IntStream.range(0, name.length).forEach(i -> {
System.out.println(name[i] + "의 점수를 입력하세요 : ");
score[i] = scanner.nextInt();
});
IntStream.range(0, score.length).forEach(i -> {
System.out.println(name[i] + "의 점수 : " + score[i]);
});
int[] arrAtt1 = {10, 20, 30, 40, 50};
int[] arrAtt2 = null;
int[] arrAtt3 = null;
// 배열 길이
System.out.println("arrAtt1.length : " + arrAtt1.length);
// 배열 요소 출력
System.out.println("arrAtt1 : " + Arrays.toString(arrAtt1));
// 배열 요소 복사 (arrAtt1과 arrAtt3의 주소는 같지 않음, 즉 둘은 다른 객체)
arrAtt3 = Arrays.copyOf(arrAtt1, arrAtt1.length);
System.out.println("arrAtt3 : " + Arrays.toString(arrAtt3));
// 배열 레퍼런스
arrAtt2=arrAtt1;
System.out.println("arrAtt1 = " + arrAtt1);
System.out.println("arrAtt2 = " + arrAtt2); // arrAtt1 == arrAtt2
System.out.println("arrAtt3 = " + arrAtt3); // arrAtt1 != arrAtt3
// 다차원 배열
int[][] arrMul = new int[3][2]; // 3행 2열의 2차원 배열
System.out.println("행 길이 : " + arrMul.length);
System.out.println("열 길이 : " + arrMul[0].length);
scanner.close();
}
}
추가로 알게된 점
배열의 이름은 첫번째 인덱스의 주소값을 담고있다.
배열 객체를 생성하고 난 후 배열의 길이는 불변이다.
배열의 메모리 크기는 배열을 구성하는 데이터 자료형에 의해 결정된다.
ex) int[] arr = new int[3]; 일 때 배열의 크기는 3이고, int형은 4byte이므로 총 12byte의 메모리 크기가 필요
궁금한 점
배열은 왜 객체로 선언될까?