- 배열 (Array) 타입
배열
: 연속된 공간에 값을 나열시키고, 각 값에 인덱스를 부여해 놓은 자료구조
: 인덱스는 대괄호 [] 와 함께 사용하여 각 항목의 값을 읽거나 저장하는데 사용
배열의 요소는 인접하게 저장이됨
배열의 값 = 원소 elements 배열의 위치 값 = 인덱스 index
#### index의 번호는 0부터 시작. ###
배열 변수 선언
: 두 가지 형태로 작성. 첫 번째가 관례적인 표기
1) 타입 [ ] 변수; 2) 타입 변수 [ ] ;
int[] nums; // 배열변수 : 변수의 타입 [] 변수;
String [] strs; // 배열변수 관례적인 표기
int nums2 []; // 배열변수 표기 2번째 방법.
String strs2 []; //
값 목록으로 배열 생성
: 배열에 저장될 값의 목록이 있다면, 다음과 같이 간단하게 배열을 생성할 수 있음
타입 [] 변수 = { 값0, 값1, 값2, 값3,.... };
: 배열 변수를 선언한 시점과 값 목록이 대입되는 시점이 다르다면 new 타입 [] 을 중괄호 앞에 붙여줌.
타입은 배열 변수를 선언할 때 사용한 타입과 동일하게 지정
변수 = new 타입[] {값0, 값1, 값2,...... };
new 연산자로 배열 생성
: new 연산자로 값의 목록은 없지만 향후 값들을 저장할 목적으로 배열을 미리 생성
타입[] 변수 = new 타입[길이];
int[] nums = new int[] {3, 4, 5, 1, 2, 3, 9, 8, 7};
new int[] 생략가능.
int[] nums = {3, 4, 5, 1, 2, 3, 9, 8, 7}; // 배열의 원소를 나열할 때 {} 사용.
: new 연산자로 배열을 처음 생성하면 배열 항목은 기본값으로 초기화된다.
(데이터 타입별 기본값으로 원소 초기화)
배열 길이
: 배열의 길이란 배열에 저장할 수 있는 항목 수
: 코드에서 배열의 길이를 얻으려면 도트(.) 연산자를 사용해서
참조하는 배열의 length 필드를 읽음
배열변수.length;
: 배열의 length 필드는 읽기만 가능하므로 값을 변경할 수는 없음.
: 배열 길이는 for문을 사용해서 전체 배열 항목을 반복할 때 많이 사용.
다차원 배열
: 배열 항목에는 또 다른 배열이 대입된 배열
변수[1차원인덱스] [2차원인덱스] [3차원인덱스]
값 목록으로 다차원 배열 생성
: 값 목록으로 다차원 배열을 생성 시 배열 변수 선언시 타입 뒤에
대괄호 [ ]를 차원의 수만큼 붙이고,
값 목록도 마찬가지로 차원의 수만큼 중괄호를 중첩
배열 Array
- 다차원 배열
new 연산자로 다차원 배열 생성
: new 연산자로 다차원 배열을 생성하려면 배열 변수 선언 시
타입 뒤에 대괄호 [] 를 차원의 수만큼
붙이고, new 타입 뒤에도 차원의 수만큼 대괄호 []를 작성
타입[][] 변수 = new 타입[1차원수][2차원수];
열 1차원
행 열 2차원
면 행 열 3차원
- 객체를 참조하는 배열
배열에서 객체 참조하기
: 기본 타입 Primitive type (byte, char, short, int, long, float, double, boolean)
배열은 각 항목에 값을 직접 저장
: 참조 타입 Reference type (class, interface) 배열은 각 항목에 객체의 번지를 저장
String[] strArray = new String[3];
strArray[0] = "Java";
strArray[1] = "C++";
strArray[2] = "C#";
- 배열 복사
배열 복사하기
: 배열은 한 번 생성하면 길이를 변경할 수 없음.
더 많은 저장 공간이 필요하다면 더 큰 길이의 배열을 새로 만들고
이전 배열로부터 항목들을 복사해야 함.
: System의 arraycopy() 메소드를 이용해 배열 복사 가능
System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length);
원본 배열 원본 배열 새 배열 새 배열 복사 항목 수
복사 붙여넣기
시작 인덱스 시작 인덱스
- 배열 항목 반복을 위한 향산된 for문
배열 및 컬렉션 처리에 용이한 for 문
: 카운터 변수와 증감식을 사용하지 않고, 항목의 개수만큼
반복한 후 자동의로 for 문을 빠져나감
: for 문이 실행되면 1. 배열에서 가져올 항목이 있을 경우 2. 변수에 항목을 저장,
3. 실행문을 실행
: 다시 반복해서 1. 배열에서 가져올 다음 항목이 존재하면
2. - 3. - 1. 로 진행하고 가저올 다음 항목이 없으면 for 문을 종료
for ( 2. 타입변수 : 1. 배열 ) {
3. 실행문;
}
- main() 메소드의 String[] 매개변수 용도
String[] args 매개변수의 필요성
: 자바 프로그램을 실행하기 위해 main() 메소드를 작성하면서
문자열 배열 형태인 String[]args 매개변수가 필요
: 프로그램 실행 시 입력값이 부족하면 길이가 0인 String 배열 참조
{"10", "20"};
main() 메소드 호출 시 전달
****
public static void main(String[] args) { ... }
- 열거 (Enum) 타입
한정된 값으로 이루어진 Enum 타입
: 요일, 계절처럼 한정된 값을 갖는 타입
: 먼저 열거 타입 이름으로 소스파일(.java)을 생성하고 한정된 값을 코드로 정의
: 열거 타입 이름은 첫 문자를 대문자로 하고 캐멀 스타일로 지어주는 것이 관례
>>> Week.java
1 package ch05.sec12;
2
3 public enum Week (열거 타입 이름 ) {
4 MONDAY, // 열거 상수 목록 (한정된 값 목록)
5 TUESDAY,
6 WEDESDAY,
7 THURSDAY,
8 FRIDAY,
9 SATURDAY,
10 SUNDAY
11 }
java library already has enum : DayOfWeek---> DayOfWeek week = DayOfWeek.FRIDAY;
댓글