강의 소개
현재 수강하고 있는 멀티캠퍼스 k-digital 지능형 웹서비스 풀 스택 과정을 수강하며 적은 내용입니다.
교재로는 자바의 정석을 사용하고 있습니다.
배열(array)
배열(array)
배열은 동일한 타입의 여러 변수들을 묶은 것이다. 유한 개의 변수들을 가지고 있는 집합이다.
- 배열의 선언과 생성
데이터타입[] 배열이름; // 배열의 선언. (데이터타입 배열변수명 []도 무관: []가 끝에 있든, 중간에 있든 동일하다.)
배열이름 = new 데이터타입[배열길이]; // 배열을 생성.
위 코드를 한 줄로 합쳐 아래와 같이 작성할 수도 있다.
데이터타입[] 배열변수명 = new 데이터타입[배열길이];
- 배열의 선언 & 생성을 동시에 하는 예시
String[] book; // 1. 배열을 선언한다.
book = new String[3]; // 2. 배열을 생성한다.(String 타입의 값을 5개 저장할 메모리를 확보한다)
위의 코드는 배열의 선언과 생성을 합쳐 한 줄로 합칠 수 있다.
String[] book = new String[3];
- 배열과 메모리 할당 순서
예시처럼 String[] book;으로 배열을 선언하면 스택에는 book이라는 배열에 대한 공간이 생긴다.
그런 다음, new String [3];으로 배열을 생성하면 힙에는 그 주소에 저장된 실제 값(배열의 요소)들을 저장하기 위한 공간이 생기며, 그 힙 공간에 대한 주소가 할당된다.
마지막으로, '=' 연산자를 통해 배열의 주소가 스택에 저장된다.
- 배열의 초기화
자바에서 인스턴스를 생성하고 값을 최초로 넣어주는 것을 초기화라 한다. 배열에 값을 넣어줄 때, 배열 이름[인덱스]으로 초기화한다.
만약, 초기화해주지 않으면 자동초기화가 된다. 기본형 타입은 0으로, 참조형 타입은 null로 자동 초기화된다.
String[] book = new String[3]; // 배열의 길이가 5인 String타입의 배열의 선언과 생성
book[0] = "자바의정석"; // 배열의 초기화
book[1] = "스프링완전정복";
book[2] = "이것이자바다";
- 배열의 선언 & 초기화 동시에 하는 방법
이렇게 배열을 선언할 때 초기화를 동시에 진행하여 한 문장으로 표현할 수도 있다.
String book = new String{"자바의정석", "스프링완전정복", "이것이자바다"}; // 배열 길이가 3인 String 타입의 배열 생성.
- 배열의 길이
배열이름.length를 통해 배열의 길이를 알 수 있다.
앞선 예시에서 지속적으로 book이라는 배열의 길이가 3이었으므로 코드로 확인한다면 아래와 같다.
book.length; // 3
- 확장된 for문(= 향상된 for문)
배열을 이용하여 확장된 for문을 사용할 수도 있다.
for (변수타입 변수명: 배열 또는 컬렉션) {
// 반복수행할 문장
}
확장된 for문의 예시를 들어보자면 아래와 같이 사용할 수 있다.
for (String onebook : book) {
System.out.println(onebook);
}
이 코드는 book이라는 배열에 저장되어 있는 요소들을 하나씩 꺼내서 onebook이라는 변수에 대입해준다.
그렇게 하나씩 꺼낸 변수(onebook)들을 하나씩 출력하는 예시이다.
확장된 for문이 아닌 일반적인 for문으로 바꾸어도 출력 결과는 동일하다.
for (int i = 0; i<book.length; i++) {
System.out.println(book[i]);
}
다차원 배열
이제까지는 1차원 배열이었으나, 2차원 이상의 배열을 생성할 수 있다.
다차원 배열은 배열 각각의 요소로 또 다른 배열을 가지고 있다고도 이해할 수 있다.
2차원 배열
데이터타입[행의 수][열의 수] 배열이름;
2차원 배열은 위와 같은 형식을 가지고 있다.
행의 개수를 확인할 때는 배열 이름. length로 알 수 있고
열의 개수를 확인할 때는 배열 이름[0]. length, 배열 이름[1]. length 등과 같이 접근해야 한다.
예시로, 5명의 학생의 국어, 수학, 영어 점수를 저장하는 2차원 배열의 코드를 작성해보자.
// 5명 학생의 국어, 영어, 수학 점수를 저장하는 이차원 배열
int scores [][] = new int[3][5]; // 정적인 길이의 배열
System.out.println("총 학생수= " + scores[0].length); // 5
System.out.println("총 과목수= " + scores.length); // 3
System.out.println("총 점수 갯수= " + scores.length * scores[0].length); // 15
가변 배열
int[][] arr = new int[3][];
// 서로 다른 열의 길이를 줄 수 있다
arr[0] = new int[1];
arr[1] = new int[5];
arr[2] = new int[2];
이렇게 2차원 배열의 수를 지정하지 않으면, 유동적인 가변 배열을 생성할 수 있다.
즉, 각 행마다 다른 길이를 가진 배열을 생성할 수 있어 고정된 형태를 가지지 않는다.
출처: 자바의 정석(남궁 성 저), 멀티캠퍼스
참고자료: 이것이 자바다(신용권 저)
'교육, 학습 > 멀티캠퍼스_풀 스택' 카테고리의 다른 글
JAVA 문법 - StringBuffer클래스 사용 이유(String과 비교) (0) | 2022.01.13 |
---|---|
멀티캠퍼스 국비교육(k-digital 지능형 웹 서비스 풀 스택 과정) 커리큘럼, 특징 (0) | 2022.01.12 |
JAVA 문법 - 기본형 타입, 참조형 타입의 형변환(자동 형변환, 명시적 형변환) (0) | 2022.01.10 |
JAVA문법 - 인터페이스 개념, abstract 클래스와의 비교(설계적 관점에서 사용이유) (0) | 2022.01.10 |
JAVA 문법 - 메서드 오버라이딩의 3가지 규칙, abstract와 final제어자 (0) | 2022.01.10 |
댓글