-
[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의 메모리 크기가 필요
궁금한 점
배열은 왜 객체로 선언될까?
'프로그래밍 > JAVA' 카테고리의 다른 글
[JAVA] 문자열 클래스 (0) 2020.09.07 [JAVA] 추상 클래스와 인터페이스 (0) 2020.09.07 [JAVA] final (0) 2020.08.10 [JAVA] static 멤버, static 메소드 (0) 2020.08.05 [JAVA] 자바 리플렉션(Java Reflection) (0) 2020.07.31