java/ㄴ CHAPTER 5. 배열

CHAPTER 5. (1) 배열이란?

Astaroth아스 2020. 3. 17. 20:26

변수는 값을 하나밖에 담지 못함
 - 만약 10000개 데이터 저장하기 위해 같은 수의 변수를 선언해야 한다면 매우 힘듬

 = 이럴때 사용하는 것이 배열

 

 

 

배열
같은 타입 여러 변수를 하나의 묶음으로 다루는 것

특징
 - 같은 타입만 묶음 가능 (다른 타입은 묶을 수 없음)
 - 각 저장공간이 연속적으로 배치됨
 ★ 만들어진 변수는 배열을 다루는데 필요한 참조변수 (저장 공간 아님)
 - index로 상수 대신 변수, 수식 사용 가능 
 - JVM이 모든 배열 길이를 별도 관리
 - 생성시 길이 변경 불가 (값 읽기만 가능, 변경 불가)

실제 자바 프로젝트 배열 많이 안씀
 - 불편함 (훨씬 편리한 게 있음)
 (실제에선 배열보다 리스트를 많이 쓸 거임)

 



배열 선언
 ㄴ 타입[] 변수이름;
 ex. int[] a;

배열 생성
 ㄴ 변수이름 = new 타입[길이];
 ex. a = new int[5];

배열 선언, 생성 동시
 ex. int[] a = new int[5];
 ㄴ bl, char는 배열로 자주 만들지 않음



요소element
 - 생성된 배열의 각 저장공간

인덱스index
 -  배열의 요소마다 붙여진 일련번호

 

 


배열이름.length
 - 배열의 길이 확인
 - for문에 배열의 길이를 직접 적는 것 보다 (배열이름.length) 사용 권장
 (조건식 일일이 변경하지 않아도 됨)

(모든 배열은 length라는 field를 갖고 있다)
(field는 변수같은 것)

 

 

 

Array.toString(배열이름)
 - 배열의 모든 요소를 [첫번째 요소, 두번째 요소, ...] 형식의 문자열로 반환
 (import.java.util.Arrays; 추가 필요)

ex. int[] arr = {10, 20, 30}
System.out.println(Array.toString(arr));
 = [10, 20, 30] 출력

바로 출력시 
ex. int[] arr = {10, 20, 30}
System.out.println(arr);
 = [I@14318bb] 등... 출력

왜?
 ㄴ 타입@주소 형식으로 출력됨 (배열의 값이 아니라 배열을 가리키는 참조변수라서)

 

★ ex.

1
2
3
4
5
6
7
8
9
10
11
        // 정수형 배열
        int[] scores = {10, 40, 100};
        // [10, 40, 100]
        
        // 실수형 배열
        double[] rates = {0.05, 0.001, 0.005};
        // [0.05, 0.001, 0.005]
        
        // ★ String형 배열 
        String[] names = {"홍길동", "김유신", "강감찬"}; 
        // [#123, #54678, #5758] (각 홍길동, 김유신, 강감찬 객체가 생성되고, 그 객체를 가리키는 주소값이 들어감)

 



char 배열은 구분자 없이 그대로 출력됨 

ex.char[] arr = {a, b, c, d} 
System.out.println(arr);  
 = abcd 출력 



변수 타입에 따른 기본값 
 ㄴ boolean : false 
 ㄴ char : '\u0000' 
 ㄴ byte, short, int : 0 
 ㄴ long : 0L 
 ㄴ float : 0.0f 
 ㄴ double : 0.0 
 ㄴ 참조형 : null 

 


null 
 - 객체를 참조하지 못하게 하는 어떤 값 (어떤 값인지는 알려주지 않음) 
 - 기본 타입에는 null 입력 불가