- 2022년 10월 7일에 작성한 글입니다. **
💡 1차원 배열
📌 기본 자료형
JAVA 배열 = 참조자료형
JAVA에서 배열은 참조자료형입니다. 참조변수를 선언한 후 배열 객체를 동적으로 생성해 할당해주는 과정이 필요합니다. 즉, 배열은 동적 할당해서 생성됩니다. 배열의 이름은 배열 객체의 참조값을 나타내며 이를 참조변수가 받아서 유지합니다.
1차원 배열의 생성
new 연산자의 사용으로 배열 객체가 명시적으로 생성됩니다. VM이 메모리의 주소를 계산하는데 필요한 정보(=참조값)를 배열 이름에 저장합니다. 이때 참조값은 메모리 주소가 아닌 id값입니다.
arrayName=new elementType[size] //동적 배열 생성
double [] costs=new double[100]; //배열 선언의 예
배열 요소의 선택과 첨자
일반적으로 배열에 접근하는 방법으로 index를 사용합니다.
arrayName[indexNumber]
costs[10]=90;
유효한 첨자의 범위는 0~(배열의 할당 크기-1) 입니다. 이를 벗어낫을 때는 ArrayIndexOutOfBoundsException 예외를 발생시킵니다.
arrayName.length
costs.lenth;
배열 선언과 동시에 초기화
배열 선언문에 중괄호를 이용하여 초기값을 할당해줍니다.
int[] list=new int[]{10,20,30,40,50}
📌 참조 자료형
객체들에 대한 참조 변수들을 배열 요소로 갖는 배열입니다. 배열 요소타입이 참조자료형인 경우입니다. 또한 배열 요소인 참조 변수가 가리키게 될 각 객체들은 반드시 별도로 생성되어야 합니다. 자세한 내용은 아래에서 언급하도록 하겠습니다.
객체 배열의 생성
- 객체 배열에 대한 참조 변수를 선업합니다.
Circle[] circles;
- new 연산자로 객체 배열을 할당합니다. 이때, 각 요소는 Circle 타입의 객체를 가리키는 참조변수입니다.
⭐ 3. new 연산자와 적절한 생성자 호출로 각 요소(참조변수)가 가리키는 객체를 할당합니다. 반드시 잊지 말아야 하는 단계입니다!circles=new Circle[5];
circles[0]=new Circle();
❗ 헷갈리지 말 것
- 객체 배열의 각 요소는 참조변수
- 참조변수가 별도의 객체를 가리킴
for each 루프
array가 참조하는 배열 요소들을 순차적으로 변수 var에 하나씩 전달하며 처리합니다.
for each (Type var) in {array}
변수 a는 배열 arr에서 한 요소를 빼냈을 때 그것을 받을 수 있는 변수입니다.
int[] arr={1,2,3};
for(int a:arr)
System.out.print(a);
💡 다차원 배열
n차원 배열은 n-1차원의 배열이 모인 것으로 n차원 배열의 각 요소를 참조하기 위해 n개의 첨자를 이용합니다. 만약 2차원이라면 1차원 배열의 그룹이라고 생각하면 이해하기가 쉽습니다.
📌 고정적 길이
int [][] test1=new int[2][3]에서 new 연산자로 객체를 생성할 때 인자에 모두 값을 넣은 것을 고정적 길이의 2차원 배열이라고 합니다.
public class BasicTypeArray {
public static void main(String[] args) {
int [][] integers;
integers=new int[2][3]; //고정된 길이의 2차원 배열
for (int g=0;g<integers.length;g++) {
for (int e=0;e<integers[g].length;e++) {
integers[g][e]=g*10+e;
}
System.out.println();
}
for(int[] a:integers) {
for(int n:a) { //a또한 배열
System.out.print(n+"\t");
}
System.out.println();
}
}
}
📌 가변적 길이
int [][] test1=new int[2][3]에서 new 연산자로 객체를 생성할 때 인자에 모두 값을 넣지 않은 것을 가변적 길이의 2차원 배열이라고 합니다.
public class BasicTypeArray2 {
public static void main(String[] args) {
int [][] integers;
integers=new int[2][]; //가변적 길이의 2차원 배열
integers[0]=new int[2];
integers[1]=new int[4];
for (int g=0;g<integers.length;g++) {
for (int e=0;e<integers[g].length;e++) {
integers[g][e]=g*10+e;
}
System.out.println();
}
for(int[] a:integers) {
for(int n:a) {
System.out.print(n+"\t");
}
System.out.println();
}
}
}
❗ 주의할 점
integers[0]=new int[2]
배열의 참조를 대입함으로써 각각 초기화할 필요가 있습니다.
'개발 > JAVA' 카테고리의 다른 글
[JAVA] 예외처리 (0) | 2023.04.11 |
---|---|
[JAVA] 클래스 상속 (0) | 2023.04.11 |
[JAVA] 클래스와 객체 & 멤버 (0) | 2023.04.11 |
[JAVA] 기본 구조와 자료형 (0) | 2023.04.11 |
[JAVA] 클래스와 객체1 (0) | 2023.04.10 |