[JAVA] 배열

@욕심쟁이

·

2020. 8. 3. 16:24

반응형

배열이란?

- 같은타입의 데이터를 연속공간에 나열(동일한 데이터 타입 변수들의 집합)

- 기본 데이터타입과 참조 데이터타입 모두를 배열로 생성 가능

- 저장된 데이터들은 배열명(변수명)을 사용하여 관리

- 그연속된 공간에는 인덱스(첨자)번호가 붙는다

- 시작은 0번부터 (0,1,2,3,4....) 배열크기의 -1까지 자동부여

- 배열은 힙이라는 메모리에 실제 데이터 저장이가능하도록 공간을 할당받고

   생성된 heap공간의 메모리 주소값을 해당변수에 저장

   (앞으로 해당 변수에 저장된 주소값을 참조하여 배열에 접근)

- 기본데이터 타입으로 배열을 생성할 경우 각타입의 기본값으로 자동 초기화가 이루어짐

- 참조 데이터 타입으로 배열을 생성할 경우 참조형의 기본값인 null값이 자동으로 초기값으로 지정됨

   (null은 참조하는 주소값이 없다는 의미의 특수 데이터)

특징

- 같은타입의 데이터만 저장가능하다(다른데이터를사용하면 타입미스매치(typemissmath) 컴파일에러 발생)

- 한번 만들어지면 메모리크기는 불변

1. 배열선언

- 배열 변수선언

  → 데이터타입[] 변수명;

     (단, 배열 선언만 했을 경우 메모리에 실제 배열 공간이 생성되기 전이므로 데이터 저장 불가)

int[] arr;   //int형 정수저장을 위한 배열공강의 이름을 arr로 선언
//=> 주의! 아직 정수를 저장할 수 있는 메모리 공간 생성전이므로 배열에 데이터 저장은 불가능

2. 배열생성

- new연산자 이용

   변수명 = new 데이터타입[배열크기];

      (메모리(Heap)에 실제 데이터 저장이 가능하도록 공간을 할당받음)

arr = new int[10];
// 변수명 = new 데이터타입[배열크기]

3. 배열 초기화

    변수명[인덱스] = 데이터;

arr[0] = 10;
arr[1] = 20;
arr[2] = 30;


//배열 선언, 생성, 초기화를 한꺼번에 수행
int[] nums = {1, 2, 3, 4, 5};

4. 배열사용

int[] nums = {1, 2, 3, 4, 5};

System.out.println("배열 arr 의 0번 인덱스 : " + names[0]);  //1
System.out.println("배열 arr 의 1번 인덱스 : " + names[1]);  //2
System.out.println("배열 arr 의 2번 인덱스 : " + names[2]);  //3

5. length를 사용하여 데이터 접근

 - 배열명.length속성을 사용하여 크기를 전달받을 수 있음

    → 출력문에 배열명.length 전달 또는 변수에 배열명.length저장

public class Test {

	public static void main(String[] args) {
		
		int[] arr = {10,20,30,40,50};
		int total = 0;
		
		for(int i= 0; i<arr.length; i++) {
			System.out.printf("arr의 %d자리의 %d\n",i,arr[i]);
            //arr의 0자리의 10
            //arr의 1자리의 20
            //arr의 2자리의 30
            //arr의 3자리의 40
            //arr의 4자리의 57
            
            total += arr[i];
		}
		System.out.println("배열 arr의 합계는 : " + total); //배열 arr의 합계는 : 157
	}

}

 

6. 이미 생성된 배열을 버리고 새로 생성하여 변수에 할당하는 경우

arr = new int[] {10,20,30,40,50};

- 주의! int[] 내부에 배열크기를 지정하지 않도록 한다!

7. 주의사항

 int[] a1, b1;// a1고 b1모두 배열타입 변수로 선언되지만 
 int a2, b2[];  //a2는 기본형 변수, b2만 배열타입 변수로 선언됨

 

참고! 데이터타입[] 변수명 :변수명의 역할은 주소값을 알려주기위해(주소저장공간) = 참조형변수

반응형