Back-End/JAVA

[Java] 배열(array,[ ])

챌링킴 2021. 5. 18. 19:24
반응형

1)배열 : 같은 자료형의 여러 변수를 나열해 놓은 것

1. 여러 값들을 하나의 이름과 인덱스로 관리하기 위해서

2. 규칙성이 없는 값들에 규칙성을 부여하기 위해서

ex)"김채린" "공주" "Java" "224" "정다솔" 을 앞뒤로 { , } 를 추가해주면

String[ ] arMsg = {"김채린", "공주", "Java", "224", "정다솔"}; 라는 배열의 값으로 규칙성 부여

 

2)배열의 선언

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

ex) int[ ] arData = {10,20,30};

2. 자료형[ ] 배열명 = new 자료형[칸수];

**new : 힙(Heap)영역에 할당됨**

3. 자료형[ ] 배열명 = null;

**null : 주소값의 초기값**

 

3) 배열의 인덱스 번호

1. 실제 값들이 저장되어 있는 공간이 할당되면 이름은 존재하지 않고, 주소값만 존재한다.

따라서 그 나열된 공간의 시작 주소값을 배열명 변수가 갖고 있고,

주소 연산을 통해 다음 주소값으로 이동한다.

2. 시작 주소에서 이동한 횟수(연산된 정수)가 나열된 변수의 방번호가 되고

첫번째 방은 배열명이 갖고있는 주소에서 0번 이동해야 한다.

따라서 첫번째 방은 0번부터 시작하고 방번호는 index라고 부른다.

 

4) 배열의 사용

data = 10;         //공간

syso(data);         //값

배열명[idx] = 값; //공간

syso(배열명[idx]); //값

 

5)배열의 길이

배열명.length

 

6) 배열 실행예제1 - 배열 정의

public class ArTest {
	public static void main(String[] args) {
		//배열선언1
		int[] arData = {10,20,30,40,50};
		System.out.println(arData[1]); //20
		arData[1] = 24;
		System.out.println(arData[1]); //24
		
		//배열선언2
		//Heap영역에 할당된 공간들은 0으로 자동 초기화됨
		int[] arData2 = new int[5];
		System.out.println(arData[0]); //0
		arData2[0] = 10;
		for (int i = 0; i < 5; i++) {
			arData2[i] = i*10+10;
		}
		for (int i = 0; i < 5; i++) {
			System.out.print(arData2[i]+" "); //10 20 30 40 50 
		}
		//배열선언3
		//나열된 공간의 주소값을 담을 배열명만 선언되어 있으므로
		//실제 값들이 담길 나열된 공간부터 할당해 주어야한다.
		int[] arData = null;
		//size : 개발자가 필요로하는 배열의 크기를 담은 변수명
		int size = 10;
		arData = new int[size];
	}
}

7) 배열 실행예제2 - 일반변수와 배열의 차이

public class ArTest2 {
	public static void main(String[] args) {
		int data1 = 10;
		int data2 = data1;
		data2 += 10000;
		System.out.println(data1); //10
		System.out.println(data2); //10010
		
		int[] arData1 = {10,20,30};
		int[] arData2 = arData1;
		arData2[1] = 20000;
		System.out.println(arData1[1]); //20000
		System.out.println(arData2[1]); //20000
		//주소값 동일
		System.out.println(arData1); //[I@7852e922
		System.out.println(arData2); //[I@7852e922
	}
}

8) 배열 실행예제3

import java.util.Scanner;

public class ArTask {
	public static void main(String[] args) {
		// 5개의 정수를 입력받아서 총 합 구하기
		Scanner sc = new Scanner(System.in);
		int[] arrData = new int[5];
		int sum = 0;
		System.out.println("5개의 정수를 입력하세요");
		for (int i = 0; i < 5; i++) {
			arrData[i] = sc.nextInt();
		}
		for (int j = 0; j < 5; j++) {
			sum += arrData[j];
		}
		System.out.println(sum);

		// n개의 정수를 입력받아서 짝수들의 총 합 구하기
		Scanner sc = new Scanner(System.in);
		System.out.println("입력받을 정수 갯수를 입력하세요");
		int n = sc.nextInt();
		int[] arrData2 = new int[n];
		int sum = 0;
		for (int i = 0; i < n; i++) {
			arrData2[i] += sc.nextInt();
		}
		for (int j = 0; j < n; j++) {
			if (arrData2[j] % 2 == 0) {
				sum += arrData2[j];
			}
		}
		System.out.println(sum);
	}
}

9) 배열 실행예제4 - 과목별 점수1

import java.util.Scanner;

public class ArTask {
	public static void main(String[] args) {
		// 국어점수, 수학점수, 영어점수, 과학점수, 한국사점수 입력받아서 총점, 평균 출력하기
		// 입력
		// 국어점수 :
		// 수학점수 :
		// ..
		// 총점 : ?점
		// 평균 : ?점
		Scanner sc = new Scanner(System.in);
		String[] subject = {"국어","수학","영어","과학","한국사","사회"};
		int[] scores = new int[subject.length];
		for (int i = 0; i < scores.length; i++) {
			System.out.println(subject[i]+"점수 : ");
			scores[i] = sc.nextInt();
		}
		int sum = 0;
		for (int i = 0; i < scores.length; i++) {
			sum += scores[i];
		}
		// 평균=> sum/6.0 || sum/(double)subject.length;
		double avg = sum / (double) subject.length;
		System.out.println("총점 : " + sum + "점");
		System.out.println("평균 : " + avg + "점");
	}
}

10) 배열 실행예제5 - 과목별 점수2(과목 갯수 입력받음)

import java.util.Scanner;

public class ArTask {
	public static void main(String[] args) {
		// 총점 : ?점
		// 평균 : ?점
		Scanner sc = new Scanner(System.in);
		System.out.println("과목 수 : ");
		int size = sc.nextInt();
		String[] subject = new String[size];
		for (int i = 0; i < size; i++) {
			System.out.println("과목명 : ");
			subject[i] = sc.next();
		}
		int[] scores = new int[size];
		for (int i = 0; i < size; i++) {
			System.out.println(subject[i]+"점수 : ");
			scores[i] = sc.nextInt();
		}
		int sum = 0;
		for (int i = 0; i < size; i++) {
			sum += scores[i];
		}
		double avg = sum/(double)size;
		System.out.println("총점 : "+sum+"점");
		System.out.println("평균 : "+avg+"점");
	}
}
반응형

'Back-End > JAVA' 카테고리의 다른 글

[Java] 메소드(method)  (0) 2021.05.21
[Java] 2차원 배열[ ] [ ], 2중 for문  (0) 2021.05.20
[Java] 기타연산자(break, continue)  (0) 2021.05.17
[Java] 반복문(for)  (0) 2021.05.17
[Java] 반복문(while)  (0) 2021.05.17