JongDDA의 한걸음 한걸음씩
[Java] 배열(Array) 본문
배열(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();
}
}
}
'개발 > Java' 카테고리의 다른 글
[Java] 객체지향 , 클래스(Class) (0) | 2021.07.09 |
---|---|
[Java] 메서드(Method) (0) | 2021.07.07 |
[Java] 제어문을 통한 영화관 예매 프로그램 만들기 (0) | 2021.07.05 |
[Java] 제어문을 통한 계산기 예제 (0) | 2021.07.05 |
[Java] 제어문(반복문) (0) | 2021.02.28 |