[JAVA] 배열 타입

y55n·2022년 6월 12일
0

JAVA

목록 보기
6/18
post-thumbnail

배열이란?

변수는 한 개의 데이터만 저장할 수 있다. 따라서 저장해야 할 데이터의 수가 많아지면 그만큼 많은 변수가 필요하다. 같은 타입의 많은 양의 데이터를 다루는 프로그램에서는 좀 더 효율적인 방법이 필요한데 이것이 배열이다. 배열은 같은 타입의 데이터를 연속된 공간에 나열시키고, 각 데이터에 인덱스(index)를 부여해 놓은 자료구조이다.

  • 배열은 같은 타입의 데이터만 저장할 수 있다.
  • 배열은 선언과 동시에 저장할 수 있는 데이터 타입이 결정된다.
  • 한 번 생성된 배열은 길이를 늘리거나 줄일 수 없다.

배열 선언

배열을 사용하기 위해서는 우선 배열 변수를 선언해야 한다.

타입[] 변수;
타입 변수[];

대괄호[]는 배열 변수를 선언하는 기호로 사용되는데, 타입 뒤에 붙을 수도 있고 변수 뒤에 붙을 수도 있다. 타입은 배열에 저장될 데이터의 타입을 말한다.

int[] intArray;
double[] doubleArray;
String[] strArray;

배열 변수는 참조 변수에 속한다. 배열도 객체이므로 힙 영역에 생성되고 배열 변수는 힙 영역의 배열 객체를 참조하게 된다. 참조할 배열 객체가 없다면 배열 변수는 null 값으로 초기화될 수 있다.

타입[] 변수=null;

만약 배열 변수가 null 값을 가진 상태에서 변수[인덱스]로 값을 읽거나 저장하게 되면 NullPointerException이 발생한다. 배열 변수는 배열을 생성하고 참조하는 상태에서 값을 저장하거나 읽어야 한다.

값 목록으로 배열 생성

배열 항목에 저장될 값의 목록이 있다면, 다음과 같이 간단하게 배열 객체를 만들 수 있다.

데이터타입[] 변수={0,1,2,3, ...};

중괄호{}는 주어진 값들을 항목으로 가지는 배열 객체를 힙에 생성하고, 배열 객체의 번지를 리턴한다. 배열 변수는 리턴된 번지를 저장함으로써 참조가 이루어진다.

int[] scores={83,90,87};

System.out.println("scores[0]:"+scores[0]);	//83
System.out.println("scores[1]:"+scores[1]);	//90
System.out.println("scores[2]:"+scores[2]);	//87

int sum=0;
for(int i=0; i<3; i++){
	sum+=scores[i];
}
System.out.println("총합: "+sum);	//260
double avg=(double)sum/3;
System.out.println("평균: "+avg);	//86.6666....

배열 변수를 이미 선언한 후에 다른 실행문에서 중괄호를 사용한 배열 생성은 허용되지 않는다.

타입[] 변수;
변수={0,1,2,3, ...};	//컴파일 에러

배열 변수를 미리 선언한 후, 값 목록들이 나중에 결정되는 상황이라면 new 연산자를 사용해서 값 목록을 지정해주면 된다. new 연산자 바로 뒤에는 배열 변수 선언에서 사용한 "타입[]"를 붙여주고 중괄호 {}에는 값들을 나열해주면 된다.

변수=new 타입[] {0,1,2,3, ...};
String[] names=null;
names=new String[]{"김개똥", "홍길동", "박말똥"};

new 연산자로 배열 생성

값의 목록을 가지고 있지 않지만, 향후 값들을 저장할 배열을 미리 만들고 싶다면 new 연산자로 다음과 같이 배열 객체를 생성시킬 수 있다.

타입[] 변수=new 타입[길이];

길이는 배열이 저장할 수 있는 값의 수를 말한다. new 연산자로 배열을 생성할 경우에는 이미 배열 변수가 선언된 후에도 가능하다.

타입[] 변수=null;
변수=new 타입[길이];

배열이 생성되고 나서 새로운 값을 저장하려면 대입 연산자를 사용하면 된다

변수[인덱스]=;
int[] scores=new int[3];
scores[0]=83;
scores[1]=90;
scores[2]=75;

배열 길이

배열의 길이란 배열에 저장할 수 있는 전체 항목 수를 말한다. 코드에서 배열의 길이를 얻으려면 배열 객체의 length 필드를 읽으면 된다. 필드는 객체 내부의 데이터를 말한다. 배열의 length 필드를 읽기 위해서는 배열 변수에 도트(.) 연산자를 붙이고 length를 적어주면 된다.

배열변수.length;
int[] intArray={10,20,30};
int num=intArray.length;	//3

length 필드는 읽기 전용 필드이기 때문에 값을 바꿀 수 없다.

intArray.length=10;	//잘못된 코드
profile
나 혼자 공부 기록

0개의 댓글