배열은 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것
- 각 저장공간이 연속적으로 배치.
- int[] score = new int[5]; //배열의 선언
- int[] score = new int[]{10, 20, 30, 40, 50};
- int[] score = {10, 20, 30, 40, 50};
- 인덱스 범위 : 0 ~ '배열길이-1'까지
- 에러 주의(ArrayIndexOutOfBoundesException)
- 배열의 길이는 int범위의 양의 정수(0도 가능).(배열이름.length)
| 선언방법 | 선언 예 |
|---|---|
| 타입[]변수이름 | int[] score; |
| 타입 변수이름[ ] | int score[]; |
배열을 선언하는 것은 단지 생성된 배열을 다루기 위한 참조변수를 위한 공간이 만들어질 뿐이고,
배열을 연산자 'new'와 함께 생성해야만 비로소 값을 저장할 수 있는 공간이 만들어지는 것이다.
타입[ ] 변수이름;
변수이름 = new 타입[길이];int[] score = new int[5];
- 배열의 길이는 int범위의 양의 정수(0도 포함)이어야 한다.
- 배열은 한번 생성하면 길이를 변경할 수 없다.
- 초기화하지 않은 경우 기본값으로 초기화 된다.
변수 타입에 따른 기본값
자료형 기본값 boolean false char '\u0000' byte, short, int 0 long 0L float 0.0f double 0.0 참조형 변수 null
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}; //OK
score = { 50, 60, 70, 80, 90}; //에러
int[] arr = new int[5]; //기존 배열
int[] tmp = new int[arr.length * 2] //2배 길이 배열 생성
for(int i=0; i < arr.length; i++)
tmp[i] = arr[i]; //arr[i]의 값을 tmp[i]에 저장
arr = tmp; //참조변수 arr이 새로운 배열 tmp를 가리키게 함.
char[] abc = {'A', 'B', 'C', 'D'};
char[] num = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
//배열 abc와 num을 붙여서 하나의 배열(result)로 만든다.
char[] result = new char[abc.length + num.length];
System.arraycopy(abc, 0, result, 0, abc.length);
System.arraycopy(num, 0, result, abc.length, num.length);
System.out.println(result);
//배열 abc를 배열 num의 첫 번째 위치부터 배열 abc의 길이만큼 복사
System.arraycopy(abc, 0, num, 0, abc.length);
System.out.println(num);
String 클래스는 cahr배열에 기능을 추가한 것이다.
String객체는 읽을 수만 있을 뿐 내요을 변경할 수 없다.
char배열과 String은 서로 변환이 가능하다.
char[] chArr = { 'A', 'B', 'C' };
String str = new String(chArr);
char[] tmp = str.toCharArray();
public static void main(String[] args) {...}
String str = "abc";
String str1 = new String("abc");
//전자는 HEAP의 메모리 영역인 String Constant Pool에서 관리되므로
//HEAP에 바로 할당되는 후자보다 유리.
//왜냐하면 String은 기본적으로 불변의 성질을 가져야 함.
//String Constant Pool에 할당된 객체는 재활용이 됨.
//따라서 전자가 유리.
char charAt(int index) //index에 있는 문자를 반환
int length() //문자열 길이 반환
String substring(int from, int to) //(from~to)에 있는 문자열을 반환.(to는 미포함)
boolean equals(Object obj) //문자열 같은지 비교. true, false 반환
boolean equalsIgnoreCase(Object obj) //대소문자 구분없이 비교
char[] toCharArray() //문자열을 문자배열로 변환해서 반환
int[][] score = new int[4][3]; //선언
int[][] arr = new int[][]{{1, 2, 3}, {4, 5, 6}}; //선언과 초기화-1
int[][] arr = {{1, 2, 3}, {4, 5, 6}}; //선언과 초기화-2
| 선언방법 | 선언 예 |
|---|---|
| 타입[ ][ ]] 변수이름 | int[][] score; |
| 타입 변수이름[ ][ ] | int score[][]; |
| 타입[ ] 변수이름[ ] | int[] score[]; |
int[][] arr = new int[][]{ {1, 2, 3}, {4, 5, 6} };
int[][] arr = { {1, 2, 3}, {4, 5, 6} };
각 행마다 다른 길이를 가지고 있는 배열
다차원 배열을 생성할 때 마지막 차수의 길이를 지정하지 않고,
추후에 각기 다른 길이의 배열을 생성함으로써 가변 배열을 구성할 수 있다.
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];
//가변 배열 선언 - 0으로 자동 초기화
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];
//가변 배열 선언, 초기화
int[][] score = {
{100, 100, 100, 100},
{20, 20, 20},
{30, 30},
{40, 40},
{50, 50, 50}
}
[참고 문헌]
https://velog.io/@pjoon357/%EC%9E%90%EB%B0%94%EC%9D%98-%EC%A0%95%EC%84%9D-5%EC%9E%A5-%EC%A0%95%EB%A6%AC#2-string-%EB%B0%B0%EC%97%B4
https://velog.io/@tone8943/%EC%9E%90%EB%B0%94%EC%9D%98%EC%A0%95%EC%84%9D-5%EC%9E%A5-%EB%B0%B0%EC%97%B4-%EC%9A%94%EC%95%BD#string