본문 바로가기
Back-End/Java

배열(array)

by 달의 조각 2021. 11. 25.
이 글은 남궁성 님의 Java의 정석 책을 바탕으로 정리한 글입니다.

 

int[] score = new int[5]; // int형의 기본값인 0으로 초기화

int[] score = new int[] {50, 60, 70, 80, 90};
int[] score = {50, 60, 70, 80, 90};

int[] score;
score = new int[] {50, 60, 70, 80, 90};
// score = {50, 60, 70, 80, 90}; 에러

int add(int[] arr) {/* 내용 생략 */}
int result = add(new int[] {100, 90, 80, 70, 60});
// int result = add({100, 90, 80, 70, 60}); 에러

// 참조변수의 기본값의 null이지만 배열을 가리키는 참조변수는 길이가 0인 배열로 초기화된다
int[] score = new int[]{}; // 길이가 0인 배열
int[] score = {};

· 한 번 생성하고 나면 길이 변경 불가
· 공간이 부족하여 길이를 변경해야 하는 경우에는 더 큰 배열(약 2배)을 새로 생성하여 복사한다

import java.util.*;

int[] iArr = { 100, 95, 80, 70, 60 };
System.out.println(Arrays.toString(iArr)); // [100, 95, 80, 70, 60]

· 배열 요소 출력: Arrays.toString(배열이름)

char[] chArr = { 'a', 'b', 'c', 'd' };
System.out.println(chArr) // abcd

· 배열이름으로 값을 바로 출력 시 참조 변수이기 때문에 '타입@주소' 출력 - char배열만 예외

 


 

 

배열의 복사

 

 

1. for문 이용

배열 요소 하나하나에 접근하여 복사

int[] arr = new int[5];

. . .

int[] tmp = new int[arr.lenght * 2]; // 기존 배열보다 길이가 2배인 배열 생성

for(int i=0; i<arr.length; i++)
	tmp[i] = arr[i];

arr = tmp; // 참조 변수 arr이 새로운 변수를 가리키게 한다.

 

2. System.arraycopy()

지정된 범위의 값을 한 번에 복사

// num[0]에서 newNum[0]으로 num.length개의 데이터 복사
System.arraycopy(num, 0, newNum, 0, num.length);

 

 


 

String 배열

 

 

참조형 변수의 기본값은 null이므로 각 요소의 값은 null로 초기화된다

자료형 기본값
boolean false
char '\u0000'
byte, short, int 0
long 0L
float 0.0f
double 0.0d 또는 0.0
참조형 변수 null

 

String[] name = new String[3];
name[0] = new String("Jang"); // String은 클래스이므로 new연산자를 통해 객체 생성

name[1] = "Park"; // 허용

 

 

주요 메서드

String 클래스 = char 배열 + 기능(메서드)

char배열과 String클래스의 중요한 차이:
String객체(문자열)은 읽을 수만 있고 내용 변경 불가
→ 변경 가능한 문자열을 다루려면 StringBuffer클래스 사용

char charAt(int index) 문자열에서 해당 위치(index)에 있는 문자 반환
int length() 문자열 길이 반환
String substring(int from, int to) 문자열에서 해당 범위(from~to)에 있는 문자열 반환
(to는 범위에 포함되지 않는다)
boolean equals(Object obj) 문자열의 내용이 obj와 같은지 확인
같으면 true, 다르면 false
char[] toCharArray() 문자열을 문자 배열(char[])로 변환해서 반환
println()으로 문자 배열을 출력하면 한 줄로 출력
(문자열처럼 보인다)

 

 


 

다차원 배열

 

 

int[][] score = {
	 	    {100, 100, 100}
                  , {20, 20, 20}
                  , {30, 30, 30}
                };

2차원 배열

 

가변 배열

마지막 차수의 길이를 지정하지 않으면 행마다 다른 길이의 배열을 생성할 수 있다

int[][] score = new int[5][];
score[0] = new int[4];
score[1] = new int[3];
score[2] = new int[2];
score[3] = new int[2];
score[4] = new int[3];

'Back-End > Java' 카테고리의 다른 글

객체지향 프로그래밍 Ⅱ  (0) 2021.12.16
객체지향 프로그래밍 Ⅰ  (0) 2021.12.02
연산자(Operator)  (0) 2021.11.16
변수(variable)  (0) 2021.11.15
Java란?  (0) 2021.11.15

댓글