[Java] 배열

sobam·2022년 10월 26일
0

자바

목록 보기
14/18
post-thumbnail

📔 학습한 내용을 정리하기 위해 작성하는 게시글입니다.

배열이란?


배열(array)은 동일한 자료형을 묶어 저장하는 참조 자료형이다.

  • 배열 요소(element) : 배열을 구성하는 각각의 값
  • 인덱스(index) : 배열에서의 위치를 가리키는 숫자

인덱스(index)

  • 자바에서 인덱스는 언제나 0부터 시작하며, 1씩 증가한다. Ex) array 배열의 인덱스[-1]을 출력하면 오류남
  • 0을 포함한 양의 정수만을 가질 수 있다.
  • 인덱스는 0부터 시작하기 때문에 배열의 길이 - 1이 인덱스 번호가 된다.
  • 배열의 값을 저장할 수 있는 공간에 붙은 방 번호

자바에서 8개의 기본 자료형 이외의 모든 자료형은 참조 자료형이다. 대표적인 참조 자료형에는 배열(array), 클래스(class), 인터페이스(interface) 등이 있다.



배열의 특징


  • 생성할 때 크기를 지정해야 하고, 한 번 크기를 지정하면 변경할 수 없다.
  • 같은 종류의 데이터를 많이 다뤄야 하는 경우에 사용할 수 있는 기본적인 자료구조이다.
  • 같은 타입만 저장할 수 있다.
  • 기본 자료형은 스택 메모리에 실제 데이터값을 저장함
    → 기본 자료형 변수를 복사하면 실제 데이터값이 1개 더 복사됨
    → 이후 복사된 값을 변경해도 원본 값을 영향을 받지 않음
  • 참조 자료형은 스택 메모리에 실제 데이터값이 아닌 힙 메모리에 저장된 객체의 위치를 저장함
    → 참조 자료형 변수를 복사하면 실제 데이터가 복사되는 것이 아니라 실제 데이터의 위칫값이 복사됨
    → 다른 참조 변수가 가리키는 데이터도 변함



배열 생성


1. 배열의 선언

자료형[] 변수명

자료형 변수명[]
// 자료형[] 변수명 - 권장
int[] a; //int 자료형만 저장 가능
double[] b; //double 자료형만 저장 가능
String[] c; //String 자료형만 저장 가능
// 자료형 변수명[]
int a[];
double b[];
String c[];

배열은 동일한 자료형으로 묶은 참조 자료형이기 때문에 선언 시에 int, double과 같은 자료형을 표기한다.

참조 자료형을 초기화할 때는 null(널)값을 사용할 수 있다. (스택 메모리에 위치하는 변수를 초기화하지 않고 출력하면 오류가 발생하므로 반드시 초기화 해주어야 한다.


2. 힙 메모리에 배열의 객체 생성하기

모든 참조 자료형의 실제 데이터(객체)는 힙 메모리에 생성된다. 힙 메모리에 객체를 생성할 때에는 new 키워드를 사용한다.

new 자료형[배열의 길이]
new int[3]; //정수 자료형 3개를 포함할 수 있는 배열 객체 생성
new String[3]; //실수 자료형 3개를 포함할 수 있는 배열 객체 생성
new Stirng[10]; //문자열 자료형 10개를 포함할 수 있는 배열 객체 생성
new int[]; //객체의 크기를 지정하지 않았으므로 오류 발생

배열을 생성할 때에는 new int[3], new String[30]과 같이 배열의 길이를 지정해야 한다. (배열의 길이를 지정하지 않으면 오류가 발생한다.)


3. 배열 자료형 변수에 객체 대입하기 (2way)

1) 변수 선언과 값(참조 자료형은 객체)의 대입을 한 번에 작성
자료형[] 변수명 = new 자료형[배열의 길이];

int[] a = new int[3];

2) 변수 선언과 값의 대입을 따로 작성
자료형[] 변수명;
변수명 = new 자료형[배열의 길이];

int[] a;
a = new int[3];
//1차원 배열의 2가지 선언 방법 방법과 다양한 배열 선언 예
public class ArrayDefinition {
	public static void main(String[] args) {
		//배열의 선언 방법 1 - 자료형 뒤에 대괄호({}) 표기
		int[] array1 = new int[3];
		int[] array2;
		array2 = new int[3];
		
		//배열의 선언 방법 2 - 변수명 뒤에 대괄호({}) 표기
		int array3[] = new int[3];
		int array4[];
		array4 = new int[3];
		
		//다양한 배열 선언(기본 자료형 배열, 참조 자료형 배열)
		boolean[] array5 = new boolean[3];
		int[] array6 = new int[5];
		double[] array7 = new double[7];
		String[] array8 = new String[9];
	}
}

4. 객체에 값 입력하기

배열 객체에 값 대입하기

참조 변수명[인덱스] = 값;
int[] a = new int[3];
a[0] = 3;
a[1] = 4;
a[2] = 5;

배열 객체 값 읽어오기

참조 변수명[인덱스];
System.out.println(a[0]); //3
System.out.println(a[1]); //4
System.out.println(a[2]); //5



배열 데이터 읽기


1) 반복문

public class ReadArrayData {
	public static void main(String[] args) {
		int[] array = new int[] {3, 4, 5, 6, 7};
        for(int i = 0; i < array.length; i++)
        	System.out.print(array[i] + " ");
		System.out.println();
	}
}

배열의 길이 구하기(length)

반복의 횟수를 결정하기 위해서는 배열의 길이를 알아야 한다. 자바에서는 '배열 참조 변수.length'로 배열의 길이를 구할 수 있다.

배열 참조 변수.length
int[] a = new int[] {3, 4, 5, 6, 7};
System.out.println(a.length); //5

2) for-each문

배열이나 컬렉션 등의 집합 객체에서 원소들을 하나씩 꺼내는 과정을 반복하는 구문이다. 집합 객체의 원소들을 출력할 때 사용한다.

for(원소 자료형 변수명 : 집합 객체) { }
int[] a = new int[100];
a[0] = 1, a[1] = 2, ..., a[99] = 100;

for(int k : a) {
	System.out.println(k);
}

3) Array 클래스의 toString() 정적 메서드

System.out.println(Arrays.toString(1차원 배열 참조 변수))

1) - 3) 예

import java.util.Arrays;

//1차원 배열의 원소 값 출력
public class ReadArrayData {
	public static void main(String[] args) {
		int[] array = new int[] {3, 4, 5, 6, 7};
		
		//배열의 길이 구하기
		System.out.println(array.length);
		
		//출력하기1
		//배열의 인덱스 번호를 사용해 배열의 모든 원소 값을 1개씩 출력
		System.out.print(array[0] + " ");
		System.out.print(array[1] + " ");
		System.out.print(array[2] + " ");
		System.out.print(array[3] + " ");
		System.out.print(array[4] + " ");
		System.out.println();
		
		//출력하기2 - for문 사용
		for(int i = 0; i < array.length; i++)
			System.out.print(array[i] + " ");
		System.out.println();
		
		//출력하기3 - for-each문 사용
		for(int k : array) {
			System.out.print(k + " ");
		}
		System.out.println();
		
		//출력하기4 - Arrays 클래스의 toString() 메서드 사용
		System.out.println(Arrays.toString(array));
	}
}


🔔 Reference

<Do it! 자바 완전 정복>
<이재환의 자바 프로그래밍 입문>
http://www.tcpschool.com/java/java_array_oneDimensional

0개의 댓글

관련 채용 정보