오늘도 자바 라이브 스터디 2주차 주제에 대해서 포스팅합니다.
배열은 같은 자료형의 데이터를 연속된 공간(메모리)에 저장하기 위한 자료구조입니다. 같은 자료형 변수 묶음을 하나로 다룰 수 있게 됩니다. 이 배열을 어떻게 선언하는지에 대해서 다뤄보겠습니다.
1차 배열
[]를 이용해서 이 자료는 배열이다~ 라고 명시해줄 수 있습니다.
int a[];
int []a;
정확히는 위의 코드처럼만 사용하시면 단순하게 배열 선언만 한 것이라서 사용은 못하구요.
int a[] = new int[5];
이 코드는 배열 선언과 생성을 동시에 해준 코드입니다. 선언과 생성을 따로따로 해주셔도 되지만 저는 합쳐서 하는 편입니다. 이런 식으로 사용해주셔야 int형 자료 5(대신 사용하고 싶은 사이즈만큼 조절 가능) 개가 들어갈 만큼의 메모리가 할당됩니다.
또한 배열로 사용하면 얘는 프리미티브(기본형 혹은 원시형) 변수가 아닌 참조형 변수가 됩니다. a에 int 공간 5개를 지휘할 수 있는 공간을 줬어요. 그럼 이걸 어떻게 사용하면 될까요?? 1,2,3,4,5라는 값을 차례로 넣고 싶다면
a[0] = 1;
a[1] = 2;
a[2] = 3;
a[3] = 4;
a[4] = 5;
위 방식처럼 사용해주시면 됩니다. 반복문을 이용하는 방법도 있겠구요. 허나 제가 알려드리고 싶은 건 각 공간을 제어하는 데 a[x] (0<=x<할당한 사이즈) 를 이용한다는 점입니다. x를 흔히들 인덱스로 부르고 0부터 시작한다는 점 기억해주세요.
int a[] = {1,2,3,4,5};
이런 방식으로도 사용이 가능합니다. 변수 선언과 동시에 값을 넣어버리는 경우입니다. 이 경우에는 배열 생성 코드(new int[])를 생략 가능합니다.
사실 배열은 한 번 길이를 정해놓으면 얘를 변경하기 어렵습니다. 메모리에서 길이만큼 연속된 공간을 가져오는데 다음 메모리 주소를 이미 다른 곳에서 사용 중일 가능성이 있습니다. 따라서 같은 메모리 주소에 이어 붙여서 길이를 늘리는 방식보다는 새로 생성하는 방식을 선택합니다. 저장된 값이야 옮기면 되니까요.
2차 배열
int [][] arr = new int [2][2];
arr[0][0] = 1;
arr[0][1] = 2;
arr[1][0] = 3;
arr[1][1] = 4;
int arr[][] = {{1,2},{3,4}};//위와 동일
베이스인 1차 배열만 알아두시면 2*2 배열 2*5 배열 마음껏 응용이 가능해집니다. 따라서 2*2 배열에 대해서는 코드로만 살펴보고 넘어가겠습니다.
타입 추론
변수에서의 타입 추론에 대해서 다뤄보겠습니다. 음음 이름에서부터 감이 오는군요. 타입을 컴파일러에서 알아서 인식한다~ 뭐 이런 내용인 듯합니다. 실제로 문서들을 봤을 때도 동일한 이야기였습니다. 자바스크립트를 사용하신 분들을 아실 겁니다. var나 let 등을 통해서 정수형 실수형 구분 없이 사용 가능했습니다. 컴파일러가 알아서 리터럴을 보고 이게 무슨 형이구나를 캐치한다는 거죠.
var a = 10;//int형
var b = 'c';//char형
var c = "hello"//string
사용 불가능한 상황
일단 초기화 없이는 사용이 불가능하겠죠. 또한 null값으로 초기화하는 경우에도 이게 대체 무슨 형인지 알 수 없으므로 var를 사용할 수 없습니다. 추가로 제가 언급하고 있는 타입 추론의 영어 full name은 'Local Variable Type-Inference'로 지역 변수에만 사용 가능합니다.(멤버 변수 안된다는 뜻)
출처
'Java' 카테고리의 다른 글
[JAVA] 자바 제어문 - 조건문 (0) | 2021.04.12 |
---|---|
[JAVA] 자바 연산자에 대하여 (0) | 2021.04.10 |
[JAVA] 타입 변환 (0) | 2021.04.08 |
[JAVA] 자바 변수 스코프와 라이프타임 (0) | 2021.04.07 |
[JAVA] 자바 원시 타입 (0) | 2021.04.05 |