본문 바로가기

java study

#14 배열

※ 시작하기 앞서  java study 카테고리 자료는 YOUTUBE에 남궁성 강사님의 자바의 정석 영상을 가지고
    공부한 내용을 정리한 것이며 상업적 목적은 전혀 없음을 알립니다.

 

배열

 

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

 

배열의 특징

1. 배열은 같은 타입만 된다.

2. 배열은 각 저장공간이 붙어있다(연속적이다)

 

 

 

배열의 선언과 생성

배열의 선언 - 배열을 다루기 위한 참조변수의 선언

 

타입[] 변수 이름;  ex) int[] score; , String [] name;  // java는 주로 이렇게 쓴다.

 

타입[] 변수이름;                          // 배열을 선언 (배열을 다루기 위한 참조 변수 선언)

변수 이름 = new 타입[길이];         // 배열을 생성 (실제 저장공간을 생성)

 

int [] score;                                    // int타입의 배열을 다루기 위한 참조 변수 score선언

score = new int [5];                        // int타입의 값 5개를 저장할 수 있는 배열 생성

 

    

 

배열의 인덱스 

 

배열의 인덱스  - 각 요소에 자동으로 붙는 일련번호

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

 

배열의 길이 

배열 이름. length - 배열의 길이(int형 상수)

 

int[] arr = new int[5];       // 길이가 5인 int배열
int   tmp = arr.length;       // arr.length의 값은 5이고 tmp에 5가 저장된다.

 

배열은 한번 생성하면 실행하는 동안 그 길이를 바꿀 수 없다.

 

 

배열의 초기화

 

배열의 각 요소에 처음으로 값을 저장하는 것

int[] score = new int[5];			//길이가 5인 int형 배열을 생성한다.
score = 5;					//각 요소에 직접 값을 저장한다.
score = 6;
score = 7;
score = 8;
score = 9;

 

 

배열은 기본적으로 기본값으로 자동 초기화된다.

ex) int -> int형의 기본값이 0으로 자동 초기화된다.

 반복문을 이용한 배열 초기화

int[] score = new int[5];				//int형 배열 생성

for(int i=0; i <score.length; i++)			//for문을 이용한 배열 초기화
	score[i] = i + 5;

 

{}를 이용한 초기화

int[] score = new int[]{5,6,7,8,9};
int[] score = {5,6,7,8,9};				// new int[] 생략 가능

※주의

문장을 둘로 나누어 쓸 경우 new []를 생략할 수 없다.

int[] score;
score = {5,6,7,8,9};					//error new int[]를 생략할수 없다.

score = new int[]{5,6,7,8,9};				//ok

 

 

배열의 출력

 

int[] iArr = {100, 95, 80, 70, 60};			//iArr.length = 5

// 배열을 가리키는 참조 변수 iArr의 값을 출력한다.
system.out.println(iArr); 				//  [I@73a28541와 같은 형식의 문자열이 출력된다.

// char 배열은 예외로 저장된 문자들을 출력한다.
char[] chArr= {'a','b','c','d'};
system.out.println(chArr);				//adcd가 출력된다.

[I@73a28541 -> [ 는 배열을 의미 I는 int형을 의미 @이후는 메모리 주소를 의미

 

 

배열의 모든 요소를 출력하려면 for문을 쓰면 된다.

for(int i=0; i < iArr.length; i++){			//배열의 요소를 순서대로 하나씩 출력한다.
	System.out.println(iArr[i]);
}

// Arrays.toString() Arrays란 클래스에 있는 toString 메서드를 이용한 출력

System.out.println(Arrays.toString(iArr)); // [100, 95, 80, 70, 60 ] 이런식으로 출력된다. 
// 배열의 내용을 문자열로 바꿔준다.

 

 

EX)

import java.util.Arrays;  // Arrays.toString()을 사용하기 위해 추가

class Ex5 {
	public static void main(String[] args) {
		int[] iArr1 = new int[10];
		int[] iArr2 = new int[10];
//		int[] iArr3 = new int[]{100, 95, 80, 70, 60};
		int[] iArr3 = {100, 95, 80, 70, 60};
		char[] chArr = {'a', 'b', 'c', 'd'};

		for (int i=0; i < iArr1.length ; i++ ) {
			iArr1[i] = i + 1; // 1~10의 숫자를 순서대로 배열에 넣는다.
		}

		for (int i=0; i < iArr2.length ; i++ ) {
			iArr2[i] = (int)(Math.random()*10) + 1; // 1~10의 값을 배열에 저장
		}

		// 배열에 저장된 값들을 출력한다.
		for(int i=0; i < iArr1.length;i++) {
			System.out.print(iArr1[i]+",");	
		}
		System.out.println();

		System.out.println(Arrays.toString(iArr2));
		System.out.println(Arrays.toString(iArr3));
		System.out.println(Arrays.toString(chArr));
		System.out.println(iArr3);
		System.out.println(chArr);
	}
}

 

 

Console

 

1,2,3,4,5,6,7,8,9,10,
[3, 5, 4, 1, 6, 7, 9, 4, 5, 3]
[100, 95, 80, 70, 60]
[a, b, c, d]
[I@73a28541

 

배열의 총합과 평균 구하기

 

class Ex5 {
	public static void main(String[] args) {
		int   sum = 0;      // 총점을 저장하기 위한 변수
		float average = 0f; // 평균을 저장하기 위한 변수

		int[] score = {100, 88, 100, 100, 90};

		for (int i=0; i < score.length ; i++ ) {
			sum += score[i]; //반복문을 이용해서 배열에 저장되어 있는 값을 모두 더한다.
		}
		average = sum / (float)score.length ; // 계산결과를 float로 얻기 위해서 형변환

		System.out.println("총점 : " + sum);
		System.out.println("평균 : " + average);
	}
}



Console

총점 : 478
평균 : 95.6

 

배열의 최댓값과 최솟값 구하기

 

class Ex5 { 
	public static void main(String[] args) { 
		int[] score = { 79, 88, 91, 33, 100, 55, 95 }; 

		int max = score[0]; // 배열의 첫 번째 값으로 최대값을 초기화 한다. 
		int min = score[0]; // 배열의 첫 번째 값으로 최소값을 초기화 한다. 

		for(int i=1; i < score.length;i++) {
			if(score[i] > max) { 		//배열 i 값이 변수 max값보다 크면 max에 저장.
				max = score[i]; 
			} else if(score[i] < min) { 	//i값이 max값보다 작으면 넘어온다.
				min = score[i]; 	//i값이 min값보다 작으면 min에 저장
			} 
		} // end of for 

		System.out.println("최대값 :" + max);       
		System.out.println("최소값 :" + min);       
	} // end of main 
} // end of class

Console

최대값 :100
최소값 :33

 

배열을 섞기 

import java.util.Arrays;

class Ex5_4 {
	public static void main(String[] args) {
		int[] numArr = {0,1,2,3,4,5,6,7,8,9};
		System.out.println(Arrays.toString(numArr));

		for (int i=0; i < 100; i++ ) {
			int n = (int)(Math.random() * 10);  // 0~9 중의 한 값을 임의로 얻는다.
			int tmp = numArr[0];
			numArr[0] = numArr[n];
			numArr[n] = tmp;
		}
		System.out.println(Arrays.toString(numArr));
	} // main의 끝
}

Console

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[4, 5, 7, 9, 0, 6, 3, 2, 8, 1]

 

 

 

▶참고자료  https://youtu.be/oJlCC1DutbA

'java study' 카테고리의 다른 글

#16 객체 지향 언어(OOP)  (0) 2022.06.06
#15 배열 (2)  (0) 2022.06.06
#13 break문,continue문, 이름붙은 반복문  (0) 2022.06.02
#12 while문  (0) 2022.06.02
# 11 for문  (0) 2022.06.02