본문 바로가기
Hello World/JAVA

JAVA - 배열 Array [개발스터디 기몬]

by 기몬 2023. 3. 10.
728x90
반응형

- 배열 (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;

728x90
반응형

댓글