배열
- 배열(array)은 연관된 데이터를 모아서 관리하기 위해 사용하는 데이터 타입이다.
- 기본 데이터타입이 아닌 참조형 데이터타입이다
- 배열은 같은 타입의 데이터를 연속된 공간에 나열하고, 각 데이터에 인덱스를 부여해 놓은 자료구조이다.
- 같은 타입의 데이터들이 순차적으로 저장된다
- 반복문을 이용하여 처리하기에 적합하다
- 정수 등의 일반적인 자료형 뿐만 아니라 클래스를 통해 만든 객체 등도 배열로 만들 수 있다
- 배열에 담긴 각각의 데이터는 원소(element)라고 한다
- 한계 : 초기화할 때 크기가 정해지기 때문에 정해진 크기 이상의 값을 넣을 수 없음 -> 컬렉션 ! (뒤에 배움)
배열 선언
- int intArray[]; 혹은 int [] intArray; (배열 레퍼런스 변수(intArray)를 생성한 것이고, 배열은 아직 생성 안된상태)
- 선언된 배열변수에 배열 생성 : intArray = new int[10];
- 선언과 동시에 생성 : int [] intArray = new int[10]; (타입 [] 레퍼런스 이름 or 타입 레퍼런스 이름 [] = new 타입[크기])
- 배열 선언과 초기화 동시에 : int [] intArray = {0,1,2,3,4,5,6,7,8,9};
- 하나의 배열을 다수의 레퍼런스 변수가 참조할 수 있다 (int intArray = new int[10]; -> int myArray[] = intArray
- 배열을 선언하면 스택 메모리에 변수의 공간만 생성하고, 공간 안은 비운 채로 둔다. 아직 배열의 객체를 생성하지 않았기 때문
- 스택 메모리에 있는 참조 자료형 변수의 빈 공간을 초기화할 때는 null값을 사용할 수 있으며, null값은 힙 메모리의 위치(번지)를 가리키고 있지 않다는 의미, 즉 연결된 실제 데이터가 없다는 것을 의미한다
배열의 크기 : length 필드
- .length는 배열에 실제 담긴 데이터의 숫자를 의미하는게 아니라 배열을 처음 생성할 때 지정한 배열의 크기를 의미한다는 점을 주의
for-each 문
- 배열의 내용을 탐색할 때 for문을 더 간편하게 사용할 수 있는 방법
- for(자료형 변수명:루프형 객체(배열,리스트 등) { //TODO } 형식으로 작성함
- 배열 members의 값을 변수 e에 담아서 중괄호 안으로 전달해준다
- 반복문의 종료조건, 종료조건을 위해 기준값을 증가시키는 등의 반복적인 값을 내부적으로 감춘 것
- 장점 : ArrayIndexOutOfBoundExcaption(존재하지 않는 인덱스를 사용하려고 했을 때 발생하는 오류메세지) 방지
- index에 접근하고자 한다면 따로 인덱스 변수를 선언해서 접근하면 됨
이차원 배열
- 자료형 참조변수이름 [][]; 혹은 자료형 [][] 참조변수이름; 으로 선언
- 첫번째 []는 행(층), 두번째 []는 열(방)
- 선언과 동시에 배열 생성하는 법 :int [][] intArray = new int[2][5]; 과 같은 형식으로 선언
이차원 배열의 length
- 참조변수이름.length -> 2차원 배열의 행의 개수
- 참조변수이름[n].length -> n번째 행의 열의 개수
비정방형 배열
- 각 행의 열의 개수가 다른 배열
- 비정방형 배열의 생성 :Int i[][]; //배열변수 i 선언 ->i = new int [4][]; //선언된 배열변수에 배열 생성
- 층 생성 후 각 층마다 방(열) 생성 : i[0] = new int [1] : 0번째 줄에 1개의 방 생성
- 생성과 동시에 초기화 : int [][] intArray = { {10,11,12}, {20,21}, {30,31,32}, {40,41}};
'언어 공부 내용 정리 > Java' 카테고리의 다른 글
자바 문자열(String) 주요 메소드 (3) | 2023.06.02 |
---|---|
자바 문자열(String) / 스택(stack)과 힙(heap) (0) | 2023.05.26 |
구름에듀 생활코딩 자바 11강~12강 (0) | 2023.05.18 |
구름에듀 생활코딩 자바 10강 조건문 (0) | 2023.05.16 |
구름에듀 생활코딩 자바 08강~09강 + == 와 .equals()의 차이점 (0) | 2023.05.15 |