배열 (array)

일상 코딩·2022년 8월 8일

01.배열이란?

  • 동일한 자료형의 순차적 자료 구조
  • 인덱스 연산자[]를 이용하여 빠른 참조가 가능
  • 물리적 위치와 논리적 위치가 동일
  • 배열의 순서는 0부터 시작
  • 자바에서는 객체 배열을 구현한 ArrayList를 많이 활용함

02.배열 선언과 초기화

배열 선언하기

int[] arr1 = new int[10];
int arr2[] = new int[10];

배열 초기화 하기

  • 배열은 선언과 동시에 자료형에 따라 초기화 됨 ( 정수는 0, 실수는 0.0, 객체는 null)
  • 필요에 따라 초기값을 지정할 수 있음
int[] numbers = new int[] {10, 20, 30};  //개수 생략해야 함

int[] numbers = {10, 20, 30};            // new int[]  생략 가능 

int[] ids; 
ids = new int[] {10, 20, 30};            // 선언후 배열을 생성하는 경우는 new int[] 생략할 수 없음

03.배열 사용하기

  • [] 인덱스 연산자 활용 - 배열 요소가 저장된 메모리의 위치를 연산하여 찾아 줌
  • 배열을 이용하여 합을 구하기

ArrayTest

package ch20;

public class ArrayTest {

	public static void main(String[] args) {
		int[] arr = new int[10];
		int total = 0;
		
		for(int i=0, num=1; i<arr.length; i++) {
			arr[i] = num++;
		}
       
		for( int i =0; i<arr.length; i++) {
			total += arr[i];	
		}

		System.out.println(total);
	}
}

출력 결과


04.배열의 길이와 요소의 개수는 동일하지 않습니다.

  • 열을 선언하면 개수만큼 메모리가 할당되지만, 실제 요소(데이터)가 없는 경우도 있다.
  • 배열의 length 속성은 배열의 개수를 반환해주기 때문에 실제 요소의 개수와는 다를 수 있다.

DoubleArrayTest.java

  • length를 활용하여 오류가 나는 경우
package ch20;

public class DoubleArrayTest {

	public static void main(String[] args) {
		double[] dArr = new double[5];
	
		dArr[0] = 1.1; 	 
		dArr[1] = 2.1; 
		dArr[2] = 3.1; 
		
		double mtotal = 1;
		for(int i = 0; i< dArr.length; i++) {
			mtotal *= dArr[i];
			
			System.out.println(mtotal);
		}
		System.out.println();		
		System.out.println(mtotal);
	}
}

출력 결과

  • 요소의 개수에 대한 변수(count)를 따로 유지
package ch20;

public class DoubleArrayTest {

	public static void main(String[] args) {
		double[] dArr = new double[5];
	
		int count = 0;
		dArr[0] = 1.1; count++; 
		dArr[1] = 2.1; count++;
		dArr[2] = 3.1; count++;
		
		double mtotal = 1;
		for(int i = 0; i< count; i++) {
			mtotal *= dArr[i];
			
			System.out.println(mtotal);
		}
		System.out.println();		
		System.out.println(mtotal);
	}
}

출력 결과


05.문자 배열을 만들어 A-Z 까지 배열에 저장하고 이를 다시 출력하기

CharArrayTest.java

package ch20;

public class CharArrayTest {

	public static void main(String[] args) {
		
		char[] alpahbets = new char[26];
		char ch = 'A';
		
		for(int i=0; i<alpahbets.length; i++) {
			alpahbets[i] = ch++;
		}
		
		for(int i = 0; i<alpahbets.length; i++) {
			System.out.println(alpahbets[i] +","+ (int)alpahbets[i]);
		}
	}
}

출력 결과


06.향상된 for문 사용하기

  • 배열의 n개 요소를 0 부터 n-1까지 순차적으로 순회할 때 간단하게 사용할 수 있음
for( 변수 : 배열) { }

CharArrayTest.java

package ch20;

public class CharArrayTest {

	public static void main(String[] args) {
		
		char[] alpahbets = new char[26];
		char ch = 'A';
		
		for(int i=0; i<alpahbets.length; i++) {
			alphabets[i] = ch++;
		}
		
		for(char alpha : alpahbets) {
			System.out.println( alpha + "," + (int)alpha);
		}
	}
}

출력 결과

profile
일취월장(日就月將) - 「날마다 달마다 성장하고 발전한다.」

0개의 댓글