Java 배열

이재현·2024년 7월 23일

Java

목록 보기
4/15

배열

선언

Int와 같은 기본형 변수는 1개의 값만 변수에 저장할 수 있었다면, int[]과 같은 배열형 변수는 여러 개를 변수에 저장할 수 있다.

단, 하나의 배열형 변수에는 같은 타입의 변수만 담을 수 있다.

배열 선언은 ‘타입 [ ] 변수’ 혹은 ‘타입 변수[ ]’로 선언할 수있다.

int[] intArray;
int intArray[];

생성

배열은 참조형 변수들처럼 new 명령을 통해 생성 가능하며, 대괄호 안에 배열의 크기를 지정한다.

배열의 크기는 배열 안에 담을 변수의 수를 의미하고, 0번부터 시작해서 순서가 정해져 있다.

또한, 배열을 생성할 때에는 타입에 따라 초기값이 미리 정해져 있다.

int intArray[] = new int[3]; // 0, 0, 0

boolean boolAarray[] = new boolean[3]; // false, false, false

String strArray[] = new String[3]; // “”, ””, ””

조회

배열을 사용하다 보면 배열 내부의 값을 찾고 싶을 때가 있다.

그럴 때는 배열의 [ ]안에 원하는 값의 순번을 입력하여 찾을 수 있다.

System.out.println(intArray[1]);

다만 해당 방법은 1개의 값만 조회할 수 있기 때문에, 여러 값을 조회하기 위해서는 반복문을 사용해 주어야 한다.

for (int i=0; i< intArray.length; i++) {

	System.out.println(intArray[1]);
    
}

대입

배열은 처음 시작하면 아무 값도 없다. 따라서 값을 넣어주어야 하는데, 방법으로는 2가지가 있다.

  • 배열에 특정 값 대입하여 선언
int[] intArr = {1, 2, 3, 4, 5};

string[] strArr = {“a”, ”b”, ”c”, ”d”, ”e”};
  • for문을 통해서 대입
for (int i=0; i< intArr.length; i++) {

	intArr[i] = i;
    
}

복사

배열은 참조형 변수이며 실제 값이 아닌 실제 값의 주소 값을 가진다.
따라서 배열의 변수 사이에 대입 연산자 ‘=’을 사용하여 복사를 하게 되면 주소 값만 복사가 된다.

얕은 복사는 이렇게 주소 값만 복사되고, 실제 값은 여전히 1개로 유지되는 것을 의미한다.

깊은 복사는 진짜 새로운 배열을 똑같이 만들고 싶을 때 사용하는 복사로, 실제 값을 갖고 있는 배열의 기본형 값을 꺼내 복사하는 것이다.

깊은 복사의 경우, 반복문이나 메서드를 통해 할 수 있다.

// 반복문을 통한 깊은 복사

int[] a = {1,2,3,4,5};

int[] b = new int[a.length];

for (int i = 0; i < a.length; i++) {

	b[i] = a[i]; // 깊은 복사
    
}
// 깊은 복사 메서드

.clone() // 가장 간단한 방법이지만, 2차원 이상의 배열에서는 얕은 복사로 동작함


// 요구 import: import java.util.Arrays

.Arrays.copyOf() // 배열과 함께 length값도 같이 복사됨

⭐ 번외 : 문자열(String)

String str = “ABCD”;

int strlength = str.length(); 
// 4로 출력됨, 왜? A,B,C,D로 구성된 문자의 배열이기 때문에

char strChar = str.charAt(1); 
// B가 출력됨

String strSub = str.substring(0, 3); 
// “ABC”가 출력됨, String을 해당 범위만큼 자름

String newStr = “ABCD”;
Boolean strEqual = newStr.equals(str); 
// 문자열이 동일한지에 대한 true/false값

Char[] strCharArray = str.toCharArray(); 
// String을 char로 이루어진 배열로 변환

String[] charArrayString = new String(strCharArray); 
// 반대로 변환

0개의 댓글