Notice
Recent Posts
Recent Comments
Link
Tags
more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
관리 메뉴

JongDDA의 한걸음 한걸음씩

[Java] 배열(Array) 본문

개발/Java

[Java] 배열(Array)

종따 2021. 7. 6. 22:21
728x90

 

배열(Array)이란?

같은 타입의 여러 변수를 하나의 묶음으로 다루는 것을 '배열(Array)'라고 한다. 많은 양의 데이터를 저장하기 위해 그 데이터의 수 만큼 변수를 선언해야 한다면 혼란을 야기할 수 있다. 하지만 배열을 사용하면 많은 양의 데이터를 수월하게 다룰 수 있다. 

 

* 배열 : 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것 *

 

 

배열의 선언은 다음과 같이 3가지 방법이 있다.

 

1. 자료형 [] 배열명 = new 자료형[길이];

package artest;

public class Artest {
public static void main(String[] args) {
	int [] arData = new int[4];// 4개의 방을 가진 배열
	System.out.println(arData); 
	arData[0] = 10;
	System.out.println(arData[0]); // 첫번째 방에 들어있는 값
	System.out.println(arData.length); // 배열의 길이
	}
}

[I@15db9742 -> I:Int형, @: 구분점, 15db9742: 배열이 들어있는 주소값을 의미한다.

arDatap[0]은 10을 넣었으니 10출력, 배열의 길이는 4

 

 

2. 자료형 배열명 [] = {값1, 값2, ......};

package artest;

public class Artest {
public static void main(String[] args) {
	
	int arData2[] = {1,2,3,4,5};
	for (int i = 0; i < arData2.length; i++) { // 배열안에 들어있는 값 전부 출력
		System.out.println(arData2[i]);
	}
}
}

 

3. 자료형 [] 배열명;

package artest;

public class Artest {
public static void main(String[] args) {
	
	int arNum[] = new int[5];
	int arNum2[] = new int[10];
	// 배열 선언 후 1~5까지의 값 넣기
	for(int i=0; i < arNum.length; i++) {
		arNum[i] = i+1;
	}
	for (int i = 0; i < arNum.length; i++) {
		System.out.print(arNum[i]+ " ");
	}
	System.out.println();
	// 10~1 까지의 값 넣기
	for (int i = 0; i < arNum2.length; i++) {
		arNum2[i] = 10-i;
	}
	for (int i = 0; i < arNum2.length; i++) {
		System.out.print(arNum2[i]+" ");
	}
}
}

배열의 인덱스

 

생성된 배열의 각 저장공간을 '배열의 요소(element)'라고 하며 '배열이름[인덱스]'의 형식으로 배열의 요소에 접근한다. 인덱스(index)는 배열의 요소마다 붙여진 일련번호로 각 요소를 구별하는데 사용된다. 

(인덱스(index)의 범위는 0부터 '배열길이 -1' 까지 이다.)

 

배열이름.length 를 통해 배열의 길이를 가져올 수 있다.

 

예제) char 배열을 이용해 java world 글자 출력

public class Array {
	public static void main(String[] args) {
		char [] word = {'j','a','v','a',' ','w','o','r','l','d'};
		for(int i=0; i<word.length; i++) {
			System.out.print(word[i]);
		}
		// 글자 역순으로 출력
		System.out.println();
		for(int i=word.length-1; i>=0; i--) {
			System.out.print(word[i]);
		}
	}
}

 

예제) 월세 계산 평균값 구하기

package artest;

import java.util.Scanner;

public class Artest02 {
	public static void main(String[] args) {
		// 1동
		// 1호 2호 3호 월세 계산
		int [] ho = new int[3];
		int sum = 0;
		double avg = 0.0;
		Scanner sc = new Scanner(System.in);
		
		for (int i = 0; i < ho.length; i++) {
			System.out.println(i+1+"호 월세를 입력하세요(단위 : 만원)");
			ho[i] = sc.nextInt();
			sum += ho[i];
		}
		System.out.println("1동 총 월세 : "+sum+"만원");
		avg = Double.parseDouble(String.format("%.2f", (double)sum/ho.length));
		// String.format: 앞에있는 문자열(%.2f)을 뒤에있는 값((double)sum/ho.length)으로 바꿔준다.
		// String은 클래스 타입이고 안의 값이 실수 이므로 Double.parseDouble로 묶어준다.
		System.out.println("평균 월세: "+avg+"만원");
	}
}

 

String 배열

배열의 타입이 String인 경우에도 배열 선언과 생성 방법은 다르지 않다.

String [] name = new String[3];  // 3개의 문자열을 담을 수 있는 배열 생성

 

예제) String 배열에 담은 이름 출력

public class Array {
	public static void main(String[] args) {
		
		String[] name = {"Steve","Brian","Robert"}; 
		for(int i=0; i<name.length; i++) {
			System.out.println("name["+i+"] = "+name[i]);
		}		
	}
}

 

예제) shop 지점 총 매출액, 평균 매출액 구하기, best매장 찾기

package artest;

import java.util.Scanner;

public class ArShop {
	public static void main(String[] args) {
		int[] arIncome = new int[3];
		String [] arName = {"강남점", "명동점", "코엑스점"};
		Scanner sc = new Scanner(System.in);
		int sum = 0;
		int count = 0;
		double avg = 0.0;
		String best = "없음";
		
		for (int i = 0; i < arIncome.length; i++) {
			System.out.println(arName[i] + "매출액을 입력하세요(단위 : 백만원)");
			arIncome[i] = sc.nextInt();
			sum +=arIncome[i];
		}
		avg = Double.parseDouble(String.format("%.2f", (double)sum/arIncome.length));
		System.out.println("총 매출액 : " + sum+"백만원");
		System.out.println("평균 매출액 : " + avg+"만원");
		// best 매장 찾기
		for (int i = 0; i < arIncome.length; i++) {
			if(arIncome[i] > avg) {
				count++;
				if(count == 1) best = ""; // 처음에만 초기화
				best += arName[i] + "\n";
			}
		}
		System.out.println("★인센티브 매장★\n" + best);
	}
}

 

2차원 배열

 

배열은 2차원 이상의 배열, 즉 다차원 배열도 선언해서 사용할 수 있다.

메모리의 용량이 허용하는 한 차원의 제한은 없지만 주로 1,2 차원 배열이 자주 사용된다.

 

2차원 배열에 대해 알아보자면 선언 방법은 1차원 배열과 크게 다를 바 없다. 단지 대괄호[] 하나가 더 들어갈 뿐이다.

 

2차원 배열 선언

선언 방법 선언 예
자료형 [][] 배열명 = new 자료형[행][열]; int[][] num = new int[5][5];
자료형 [][] 배열명 = {  {값1, 값 2,...}, {값3, 값 4,...} } int[][] num = { {1,2,},{3,4,} }
자료형[] 배열명[]; int[] num[];

 

2차원 배열 인덱스

2차원 배열은 행(row)과 열(column)로 구성되어 있기 때문에 index도 행과 열에 각각 하나씩 존재한다. 2차원 배열의 각 요소에 접근하는 방법은 '배열이름[행index][열index]' 이다.

 

int [][] num = new num[4][3]; 

4행 3열의 2차원 배열을 생성했다고 가정해보자 

각 배열 요소에 접근할 수 있는 방법은 아래와 같다.

 

num[0][0] num[0][1] num[0][2]
num[1][0] num[1][1] num[1][2]
num[2][0] num[2][1] num[2][2]
num[3][0] num[3][1] num[3][2]

 

EX)

public class ArrayEx {
	public static void main(String[] args) {
		int[][] arr = new int[3][2];

		System.out.println("arr.length : " + arr.length);
		System.out.println("arr[0].length : " + arr[0].length);
		System.out.println("------------------------");

		// 2차원 배열 전체 인덱스 출력
		int num = 0;
		for (int j = 0; j < arr.length; j++) {
			for (int i = 0; i < arr[j].length; i++) {
				num++;
				arr[j][i] = num;
				System.out.println(arr[j][i] + " ");
			}
            System.out.println();
		}
	}
}

 

 

 

728x90
반응형
Comments