자바/자바 기초
배열
qkwi
2021. 11. 10. 17:05
728x90
배열
배열이란
- 배열은 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것
- 서로 다른 타입의 변수들로 구성된 배열은 만들 수 없다.
배열의 선언과 생성
- 원하는 타입의 변수를 선언하고 변수 또는 타입에 배열임을 의미하는 대괄호[]를 붙이면된다.
선언방법
int[] age; // 타입[] 변수이름;
String[] name; // 타입[] 변수이름;
int age[]; // 타입 변수이름[];
String name[]; // 타입 변수이름[];
//대괄호를 타입에 붙이는 쪽을 선호
//대괄호가 변수이름의 일부라기보다는 타입의 일부라고 본다.
배열의 생성
배열을 선언하는 것은 단지 생성된 배열을 다루기 위한 참조변수를 위한 공간이 만들어질 뿐이고, 배열을 생성해야만 비로소 값을 저장할 수 있는 공간이 만들어지는 것이다.
배열을 생성하기 위해서는 연산자 NEW와 함께 배열의 타입와 길이를 지정해 주어야 한다.
int[] age;
age = new int[5];
int[] age = new int[5];// 한번에 선언과 생성을 처리하는 방법
배열의 길이와 인덱스
생성된 배열의 각 저장 공간을 배열의 요소라고 하며, 배열이름[인덱스]의 형식으로 배열의 요소에 접근한다.
인덱스는 배열의 요소마다 붙여진 일련번호로 각 요소를 구별하는데 사용된다.
인덱스의 시작은 1부터가 아닌 0부터 시작한다.
int[] age=new int[5]; // age[0]~age[4]까지 저장공간이 생긴다.
배열의 괄호안에 수식이 포함된 경우, 이 수식이 먼저 계산된다. 그래야만 배열의 몇 번째 요소인지 알 수 있기 때문이다.
int idx = 5; int[] age =new int[10];
age[idx]= 5; // age[5] = 5 로 변경
age[idx+1] = 100; // age[5+1] 로 변경된다.
- 유효한 범위를 벗어난값을 index로 사용하게 됐을 때 컴파일러는 이러한 실수를 걸러주지 못한다. 왜냐하면 배열의 index로 변수를 많이 사용하는데, 변수의 값은 실행 시에 대입되므로 컴파일러는 이 값의 범위를 확인할 수 없다.
### 배열의 길이
- 배열의 길이는 int범위의 양의 정수도 포함이다.
- 최대길이는 int타입의 최대값이다.
- 배열은 한번 생성하면 길이를 변경할 수 없기 때문에, 이미 생성도니 배열의 길이는 변하지 않는다.
- 배열이름.length는 상수이다.
### 배열의 길이 변경
```java
1. 더 큰 배열을 새로 생성한다.
2. 기본 배열의 내용을 새로운 배열에 복사한다.
- 이러한 작업들은 꽤나 비용이 많이 들기 때문에 처음부터 배열이 길이를 넉넉하게 잡아줘서 새로 배열을 생성해야하는 상황이 가능한 적게 발생하도록 해야 한다.
배열의 초기화
참조변수
- 참조변수의 기본값을 null이지만 배열을 가르키는 참조변수는 null 대신 길이가 0인 배열로 초기화하기도 한다.
int[] score = {}; // 길이가 0 인배열, new int[]가 생략됨
배열의 저장
- 기본형 배열이 아닌 경우, 즉 참조형 배열의 경우 배열에 저장되는 것은 객체의 주소이다.
String 배열과 char 배열
char[] hex = {'a','b','c','d'};
String test = new String(hex);
System.out.println("test "+ test); //abcd
/*
public String(char[] value) {
this((char[])value, 0, value.length, (Void)null);
}
*/
- 자바에서는char배열이 아닌 String 클래스를 이용해서 문자열을 처리하는 이유는 String클래스가 char배열에 여러 가지 기능을 추가하여 확장한 것이기 때문이다.
간단한 String 클래스의 주요 메서드
char charAt(int index): 문자열에서 해당 위치에 있는 문자를 반환한다.
length() : 문자열의 길이를 반환한다.
substring(int from, int to) : 문자열에서 해당 범위에 있는 문자열을 반환한다.(to는 범위에 해당하지않음 to전까지)
equals(Object obj) : 문자열의 내용이 obj와 같은지 확인한다. 결과는 true, 다르면 false가 된다.
char[] toCharArray() : 문자열을 문자 배열로 변환해서 반환하다.
char배열과 String 클래스의 반환
char[] chArr={'a','b','c'};
String str = new String(chArr);
char[] tmp = str.toCharArray();
728x90