[Java 08] 자바 - 참조변수 (2)

학습목표

이번에는 배열타입에 대해 자세히 알아보도록 하겠습니다. 해당 포스팅을 통해 아래 4가지를 확실히 배워보도록 하겠습니다.

  1. 배열타입이란 무엇인가?
  2. 배열선언은 어떤 형식으로 하는가?
  3. 배열의 초기화하는 방법 2가지는 무엇인가?
  4. length 활용법은 무엇인가?

배열타입이란?

배열은 같은 타입의 데이터를 연속된 공간에 나열시키고, 각 데이터에 색인(index)를 부여해 놓은 자료구조입니다.

  • 같은 종류의 데이터를 저장하기 위한 자료구조
  • 크기가 고정되어 있음(한번 생성된 배열은 크기를 바꿀 수 없다)
  • 배열은 객체로 취급
  • 배열의 요소를 참조하려면 배열이름과 색인(index)라는 int 유형의 정수값을 조합하여 사용

refVar03

다음 코드처럼 for문과 배열을 활용해 점수의 평균을 쉽게 구할 수 있습니다.

public class Practice02 {
public static void main(String[] args) {
	int[] scores = { 87, 88, 90, 50, 45, 78, 95, 99, 98, 89 };
	int sum = 0;
	for (int i = 0; i < scores.length; i++) {
		sum += scores[i];
	}
	int avg = sum / 10;

	System.out.println(avg);
	}
}

배열선언

1차원 배열 선언

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

다차원 배열 선언

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

배열 변수는 참조 변수에 속하기 때문에 참조할 객체가 없다면 배열 변수는 null 값으로 초기화될 수 있습니다.

타입[ ] 변수 = null

값 목록으로 배열 생성

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

예시

String[] sports = {"농구", "축구", "야구"}; 


“축구”를 “배구”로 바꾸고 싶으면 아래와 같이 작성하면 됩니다.

sports[1] = "배구";

예시

public class Practice03 {
public static void main(String[] args) {
	int[] scores = { 80, 85, 93, 100 };   //값 목록으로 배열 생성
	
	System.out.println("scores[0] : " + scores[0]); 
	System.out.println("scores[1] : " + scores[1]); 
	System.out.println("scores[2] : " + scores[2]); 
	System.out.println("scores[3] : " + scores[3]);
	
	int sum = 0;
	for(int i = 0; i < 4; i++) {
		sum += scores[i];
	}
	System.out.println("총합 : " + sum);
	double avg = (double) sum /3;
	System.out.println("평균 : " + avg);
}
}

주의할 점은 다음과 같이 배열 변수를 이미 선언한 후에 다른 실행문에서 중괄호 사용한 배열 생성은 불가합니다.

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

배열 변수 미리 선언하고 나중에 값 목록 넣고 싶다면 다음과 같이 new 연산자를 활용해야 합니다.

변수 = new 타입[] { 값0, 값1, 값2, 값3, ...};

예제

public class Practice04 {
	public static void main(String[] args) {
		int[] scores;
		scores = new int[] { 60, 78, 93, 100 };
		int sum1 = 0;
		for (int i = 0; i < 4; i++) {
			sum1 += scores[i];
		}
		System.out.println("총합 : " + sum1);

		int sum2 = add(new int[] { 60, 78, 93, 100 });
		System.out.println("총합 : " + sum2);
		System.out.println();

	}

	private static int add(int[] scores) {
		int sum = 0;
		for (int i = 0; i < 4; i++) {
			sum += scores[i];
		}
		return sum;
	}
}

실행결과

총합 : 331
총합 : 331

new 연산자로 배열 생성

값의 목록은 가지고 있지 않지만, 향후 값들을 저장할 배열을 미리 만들고 싶으면 new 연산자로 배열 객체 생성이 가능합니다. new 연산자로 배열을 처음 생성하면 배열은 자동적으로 기본값으로 초기화됩니다.

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


배열이 생성되고 나서 새로운 값을 저장하려면 대입 연산자를 사용하면 됩니다. 예를들어 배열 scores 0, 1, 2 인덱스에 각각 60, 78, 93, 100을 저장하는 코드는 다음과 같습니다.

변수[인덱스] = 값;


예제


public class Practice05 {
	public static void main(String[] args) {
		
		int[] arr1 = new int[3];
		for (int i = 0; i < 3; i++) {
			System.out.println("arr1[" + i + "] :" + arr1[i]);
		}

		arr1[0] = 10;
		arr1[1] = 20;
		arr1[2] = 30;
		for (int i = 0; i < 3; i++) {
			System.out.println("arr1[" + i + "] :" + arr1[i]);
		}
		double[] arr2 = new double[3];
		for (int i = 0; i < 3; i++) {
			System.out.println("arr2[" + i + "] :" + arr2[i]);
		}
		arr2[0] = 0.1;
		arr2[1] = 0.2;
		arr2[2] = 0.3;
		for (int i = 0; i < 3; i++) {
			System.out.println("arr2[" + i + "] :" + arr2[i]);
		}

		String[] arr3 = new String[3];
		for (int i = 0; i < 3; i++) {
			System.out.println("arr3[" + i + "] :" + arr3[i]);
		}

		arr3[0] = "1월";
		arr3[1] = "2월";
		arr3[2] = "3월";
		for (int i = 0; i < 3; i++) {
			System.out.println("arr3[" + i + "] :" + arr3[i]);
		}
	}
}

실행결과

arr1[0] :0
arr1[1] :0
arr1[2] :0
arr1[0] :10
arr1[1] :20
arr1[2] :30
arr2[0] :0.0
arr2[1] :0.0
arr2[2] :0.0
arr2[0] :0.1
arr2[1] :0.2
arr2[2] :0.3
arr3[0] :null
arr3[1] :null
arr3[2] :null
arr3[0] :1월
arr3[1] :2월
arr3[2] :3월

배열 길이

배열변수.length
public class Practice06 {
public static void main(String[] args) {
	int[] scores = { 60, 78, 93, 100 };
	
	int sum = 0;
	for(int i = 0; i < scores.length; i++) {
		sum += scores[i];
	}
	System.out.println("총합 " +sum);
	
	double avg = (double) sum / scores.length;
	System.out.println("평균 : " + avg);
}
}

실행결과

총합 331
평균 : 82.75

태그:

카테고리:

업데이트:

댓글남기기