1차원 배열은 동일한 자료형의 집합을 의미한다.
즉, 배열이란 자료형의 종류(int,float,double)가 아닌 자료형의 집합을 의미한다.
변수 여러개를 선언한 것과 같은 효과가 있다. (int a,int b,int c)
자바는 이러한 배열을 단순한 배열이 아니라 객체로 만들어 관리한다.
배열의 생성에는 크게 3가지가 있다.
배열의 선언만 하는 경우
int [ ]arr; //배열 공간이 할당되지 않은 상태
int arr[ ];
int arr[5]; // 이런식으로 선언하면 컴파일 오류난다 c언어는 가능하다.
배열의 선언은 컴파일러에게 배열을 사용할 것임을 알려주지만, 공간이 실제로 만들어 진것은 아니다.(예약)
만약 배열의 공간을 만들어 주고 싶으면 ,힙공간에 할당해 주어야 한다.
arr=new int [5]; //선언 +자동 초기화
초기화 하지 않았을때 null 로 초기화 되지 않고 기본값으로 초기화 된다는 것을 알아야 한다.
String [] st = new String[5]; ->{null,null,null,null,null}
int arr2 []=new int[5]; {0,0,0,0,0 }
선언과 공간할당만 하는 경우
타입[ ] 변수 = new 타입[원소수]
int [ ] array=new int[5]; —>초기값은 {0,0,0,0,0}이다.
생성 시점에 값이 정해지지 않은 경우 먼저 공간을 확보하기 위한 방법이다.
배열의 원소 수 만큼 배열 공간을 생성한다.
우리가 초기화 하지 않아도 생성 시 초기값은 해당 타입의 기본값으로 설정된다.
타입별 기본값은 참조형(String)은 null, int형은 '0', 실수형은 ‘ 0.0’,boolean 타입은 'false', char 타입은 ' '(공백)이다.
선언과 공간할당 및 동시 직접 초기화 하는 경우
타입[ ] 변수 =new 타입{ 값,값,값 };
**타입 [ ] 변수={값,값,값 };**
int [ ] arr2=new int[]{1,2,3,4,5}
생성과 함께 초기화 되는 경우는 new 타입[ ]을 생략할 수 있다.
선언과 생성이 분리되는 경우는 생략이 불가능하다.
int [ ] arr={1,2,3,4,5};
String[ ] st={"Goodmoring","moring","Hello","bye"};
package com.java.array01;
public class Array02 {
public static void main(String[] args) {
// 배열 > 1차원 배열
//1.배열 생성 (선언)
//1.1 선언
int arr [];
int [] arr1; //[]의 순서는 상관없다.
//int arr2[5]; 배열의 길이를 설정하면 에러발생. c언어는 가능
//1.2 선언 +할당 -> 기본값으로 초기화 {0,0,0,0,0 }
int arr2 []=new int[5];
//1.3 선언 +할당 +초기화
int arr3[] = new int[] {1,2,3,4,5};
//생략형
int arr4 []= {1,2,3,4,5};
//2.배열 할당(자동초기화) 메모리에 공간을 할당
//배열의 크기 :4*5=20바이트, 힙에 생성되고 초깃값은 0으로 초기화
arr=new int[5]; //int arr []=new int[5]; {0,0,0,0,0 }
//문자열 배열
String [] st=new String[3]; //{null,null,null}
//3.값을 대입(접근) :index를 이용해서 접근
arr[0]=1;
arr[1]=2;
arr[2]=3;
arr[3]=4;
arr[4]=5;
//출력
System.out.println("배열의 첫번째 값은"+ arr[0]+"입니다.");
System.out.println("배열의 두번째 값은"+ arr[1]+"입니다.");
System.out.println("배열의 세번째 값은"+ arr[2]+"입니다.");
System.out.println("배열의 네번째 값은"+ arr[3]+"입니다.");
System.out.println("배열의 다섯번째 값은"+arr[4]+"입니다.");
}
}
배열의 이름은 배열의 첫번째 주소값을 가지고 있고, 배열의 이름을 통해서 배열에 접근한다.
만일 ,배열의 요소에 접근하고자 할 때 배열의 인덱스를 통해서 접근한다.
배열의 인덱스는 배열의 순서이다. 실제로 배열의 길이를 나타낸다
따라서 연속하여 배치되기 때문에 각 배열의 원소에 접근 할 때 주소값을 몰라도 된다.
개별 인덱스를 통하여 배열의 요소에 접근하는 방법
package com.java.array01;
public class Array03 {
public static void main(String[] args) {
// 1차원 배열 > 배열의 요소 접근
//int형 배열을 만들고 10,20,30,40,50,을 대입하시오.
//1.선언+할당
int[] arr = new int[5];
//2.값 대입
arr[0]=10; //첫번째 요소
arr[1]=20;
arr[2]=30;
arr[3]=40;
arr[4]=50; //마지막 요소
//3.출력(for)
// System.out.println("배열의 첫번째 값은"+ arr[0]+"입니다.");
// System.out.println("배열의 두번째 값은"+ arr[1]+"입니다.");
// System.out.println("배열의 세번째 값은"+ arr[2]+"입니다.");
// System.out.println("배열의 네번째 값은"+ arr[3]+"입니다.");
// System.out.println("배열의 다섯번째 값은"+arr[4]+"입니다.");
for(int i=0;i<5;i++) {
System.out.println(arr[i]); //i=0,1,2,3,4
}
}
}