youngfromnowhere
[Java]Array 선언, 생성, 초기화 본문
Primitive type의 변수를 쓸 때는 선언(declare)하고 초기화(initialize)를 해주면 되는데,
Reference type의 변수는 중간에 '생성(create)'이라는 과정을 거쳐주어야 한다.
왜? Reference type(참조변수)이란 말그대로 다른 어떤 객체(값)가 저장되어 있는
memory address를 저장하는 변수이기 때문이다.
참조변수의 선언은 memory address를 저장할 변수를 선언할 뿐이기 때문에
우리가 원하는대로 변수를 사용하려면 해당 type(class)의 객체를 생성하여 할당해야 한다.
//Declare
myType var_name;
//Create
var_name = new myType()
Array 또한 reference type이기 때문에 선언 후 '생성'시켜줘야 한다.
이 때 문법이 일반적인, 사용자가 정의한 type과는 조금 다르다.
또, 먼저 java.util.Arrays를 import 해줘야 사용할 수 있다.
Array를 선언, 생성, 초기화 하는 과정에 있어서 생성, 초기화를
한 줄에 처리할 수 있다. 경우의 수가 좀 다양해서 여기에 정리해본다.
import java.util.Arrays;
public class Test01 {
static void print(int[] arg, String name) {
System.out.println("=====" + name + "=====");
System.out.println(Arrays.toString(arg));
System.out.println(arg);
System.out.println("=====================");
}
public static void main(String[] args) {
/* Declare, create */
int[] testArray01;
testArray01 = new int[4];
print(testArray01, "testArray01");
/* Declare + create */
int[] testArray02 = new int[4];
print(testArray02, "testArray02");
/* Declare + create + initialize */
int[] testArray03 = new int[] {1,2,3,4};
print(testArray03, "testArray03");
int[] testArray04 = {5,6,7,8};
print(testArray04, "testArray04");
/* Declare, create + initialize */
int[] testArray05;
testArray05 = new int[] {1,2,3,4};
print(testArray05, "testArray05");
}
}
Decalre와 create는 따로할 수도 한 줄에 동시에 할 수도 있다.
Create이후 initialize하지 않으면 integer array의 각 요소에는 integer의 기본값인 0이 저장된다.
Array의 모든 요소를 한번에 initialize 하려면 create한 행에서 중괄호{}를 이용해서 해준다.
(이때 객체를 생성하는 명령인 new type을 생략할 수 있다.)
(또 이 방식에서는 Array의 길이를 지정하지 않는다. 초기화 과정에서 정해지기 때문)
만약 이렇게 하지 않고 create한 뒤 따로 initialize 하려면
요소를 각각 초기화 하거나 for-loop 등의 반복문을 이용해야 한다.
(중괄호를 쓸 수 없다)
위 코드를 컴파일 후 실행시키면
=====testArray01=====
[0, 0, 0, 0]
[I@18b4aac2
=====================
=====testArray02=====
[0, 0, 0, 0]
[I@764c12b6
=====================
=====testArray03=====
[1, 2, 3, 4]
[I@c387f44
=====================
=====testArray04=====
[5, 6, 7, 8]
[I@4e0e2f2a
=====================
=====testArray05=====
[1, 2, 3, 4]
[I@73d16e93
=====================
print 메소드의 내용과 결과를 보면 알 수 있듯이, Array를 그대로 System.out.println()에 입력하면
화면에는 해당 변수에 저장된 'memory address'가 출력된다.
Array의 값을 보고 싶다면 Arrays.toString()메소드를 써야 한다.
'Java' 카테고리의 다른 글
| [Java] 의도한대로 작동하지 않은 clearScreen() (0) | 2022.11.30 |
|---|---|
| [Java] Java compile. 디렉토리 설정 옵션 (0) | 2022.11.25 |
| [Java] 수동 컴파일할 때, 소스코드 수정사항이 반영되지 않는 경우 (0) | 2022.11.25 |
| [Java] Abstract Class 간단한 메모 (0) | 2022.11.18 |
| [Java] Bitwise 논리연산자의 우선순위 (0) | 2022.11.08 |