자바의 정석

자바의 정석 5장

그zi운아이 2023. 6. 6. 16:00

Chapter 4

 

배열


1.배열

배열이란 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것을 배열이라고 한다. 만약 1억개 만큼의 데이터를 저장해야 되는 상황이 왔을때  1억개의 변수를 선언해야 되는것은 불가능 하다. 배열을 사용하면 많은 양의 데이터를 다룰 수 있다.

 

1-1 배열의 선언과 생성

배열의 선언

배열의 선언 방식은 다른 변수 선언과 비슷하다. 원하는 타입의 변수를 선언하고 대괄호를 붙이면 된다.

선언 방식 선언 예
타입[] 변수이름; int[] scores;
String[] names
타입 변수이림[]; int scores[]
String names[]

 

배열의 생성

배열을 선언한 후에는 배열을 생성해야 된다. 배열 선언은 참조변수를 위한 공간이 만들어질 뿐이고 값을 저장할 수 있는 공간을 만들기 위해선 new 연산자와 배열의 길이를 지정해 주어야 한다.

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

// int타입을 크기10인 배열 생성
int[] numbers;
numbers = new int[10];

//간결하게 표현 가능
int[] numbers = new int[10];

 

1-2 배열의 생성

  • 배열의 같은 타입의 데이터만 저장할 수 있다.
    • int면 int String이면 String 등의 같은 데이터만 저장이 가능하다.
    • 객체도 배열을 만들 수 있다.
  • 한번 생성된 배열의 길이를 늘리거나 줄일 수 없다.
    • 이를 극복하기 위해 새배열을 만들어 배열을 복사하는 방식을 사용해야 한다.
  • 배열은 index를 가지고 element에 접근한다,
    • index는 배열의 element마다 붙여진 일련번호이다.
  • index는 0~array.length -1의 길이를 가지고 있다.

 

배열의 출력

배열의 변수는 값을 저장하는 기본 변수가 아닌 주소를 저장하는 참조 변수이다. 따라서

System.out.print(배열명);을 하는 경우에 우리가 원하는 값을 얻을 수 없다.

아래 코드는 배열의 값을 출력하기 위한 코드이다.

  1. 크기10이고 이름이 arr인 배열 생성
  2. 반복문 실행 i의 값이 배열의 길이보다 작으면 true 즉 i < 10
  3. 출력문을 이용한 배열 값 출력 
int[] arr = new int[10];

for(int i =0 ; i<arr.length; i++){
	System.out.println(arr[i]);
}

 

1-3 배열의 활용

배열의 기본적인 생성 출력을 살펴보았다. 이 배열을 어떻게 활용해야할지 예제를 통해 알아보자 

총합과 평균 구하기

class ArrayTest{
	public static void main(String args[]){
    	int sum = 0;
        float avg = 0f;
        
        int[] score = {100,88,100,100,90};
        
        for(int i =0; i<score.length; i++){
        	sum += score[i];
        }
        
        avg = sum / (float)/score.length;
        
        System.out.println("총점 +:" +sum);
        System.out.println("평균 +:" +avg);
    }
}

실행결과
 총점 : 478
 평균 : 95.6
  • 총점과 평균을 저장한 sum,avg 변수 선언 및 초기화
  • int 타입의 점수 저장을 위한 score 배열 생성
  • 반복문을 통해 sum += score[i] 실행
  • 구해둔 총점을 통한 avg값 연산
  • 출력문 실행 

 

'자바의 정석' 카테고리의 다른 글

자바의 정석 10장  (0) 2023.08.21
자바의 정석 6장  (0) 2023.06.13
자바의 정석 3장  (0) 2023.06.01
JVM 메모리 구조  (0) 2023.05.30
객체 지향 언어와 절차 지향 언어  (0) 2023.05.30