자바 배울 때 1차 관문이 배열이 아닐까 생각한다
stack이랑 heap이란 개념이 이 부분에서 처음 접하게 돼서 더욱 어려웠던 것 같다
뭔가 배열을 잘 사용하는 것 같아도 스택이랑 힙 개념이 너무 헷갈려서 정리해 보고 완벽히! 이해해 보고 싶어서 정리를 시작하게 되었다 😎
(내가 헷갈리는 것만 정리함 주의)
같은 타입 데이터 여러 개를 하나의 변수명을 사용하여 연속된 공간으로 다루는 것
배열을 사용할 땐, 선언 -> 생성 -> 초기화의 과정을 거쳐야만 한다.
선언과 생성을 동시에 할 수도 있고, 이 세 개를 모두 동시에 할 수 있다.
형식 ) 데이터타입 [] 변수명;
- 선언하게 되는 변수명은 스택(Stack) 영역에 배열 공간의 주소를 저장할 참조 변수로 사용된다.
- 이는 데이터 저장할 수 있는 공간이 만들어지기 전이므로 데이터를 저장할 수 없다.
(참고) 크기나 접근은 [] 대괄호를 사용하고
데이터를 저장할 땐 {} 중괄호를 사용한다.
즉 ! 나 배열 만들 거다 ~ 라는 선언만 한 거지 저장할 준비는 안 되어 있다는 것
스택에 참조할, 주소가 저장될 변수만 만들어 놓은 것
코드
int [] arr ;
형식 ) 변수명 = new 데이터타입 [배열크기]
- new 연산자에 의해 힙 (Heap) 영역에 배열 크기만큼의 공간이 생성됨
- 해당 배열의 데이터타입은 지정된 데이터타입만 저장 가능하다
- 생성된 배열 공간의 주소값을 좌변의 변수에 저장한다
- 배열을 생성하고 나면 자동적으로 지정된 데이터타입의 기본값으로 자동적으로 초기화된다.
(int -> 0 / String -> null이 저장됩니다)
이제 데이터 저장할 준비가 되었고 알맞은 데이터를 저장하기만 하면 된다
코드
arr = new int [3] ;
형식) 변수명[인덱스]
- 참고로 인덱스는 0부터 시작한다
코드
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
형식) 데이터타입 변수명 = new 데이터타입 [배열크기]
코드
int [] arr = new int [3];
해석) 데이터타입은 int[]이며, 크기를 3을 가진 배열을 만들 것이다.
(처음에 나도 헷갈렸던 건데 배열의 크기가 0부터 시작해서 new int[3]이라고 하면 크기가 4인 배열을 만든다는 건가 3인 배열을 만든다는 건가 싶었는데 그냥 배열의 크기 즉, 크기가 3인 배열을 만든다는구나! 하고 생각하면 된다)
형식 ) 데이터타입 [] 변수명 = {데이터1, 데이터2, 데이터3 ...데이터n }
- 자동적으로 n개의 저장 공간과 입력한 데이터로 초기화된다
- 이후 크기 조정과 더 많은 데이터 저장은 불가능하다
코드
int [] arr = {1,2,3};
형식) 1. 데이터타입 [] 변수명;
2. 변수명 = new 데이터타입 [] {데이터1, 데이터2, 데이터3 ... 데이터n};
코드
int[] arr;
arr = new int[] {1,2,3};
크기가 4인 String 타입 배열 animal을 만들어 보아라
선언, 생성, 초기화 따로
a. 선언
String [] animal;
b. 생성
animal = new String[4];
c. 초기화
animal[0] = "dog";
animal[1] = "cat";
animal[2] = "panda";
animal[3] = "snake";
선언과 생성, 초기화 동시에
String [] animal = new String[] {"dog","cat","panda","snake"};
위에 썼던 배열을 사용해서 이를 설명하자면
System.out.println(animal);
을 콘솔에 찍어보면 [I@27f674d
이런 식으로 주소가 나온다.
앞서 말했던 변수명은 참조 변수로 주소가 저장됨을 다시 한 번 알 수 있는 것이다.
아무래도 글로 암만 적어봤자 눈에 보이지 않으면 알 수 없으니 (내가 그럼 ㅠ) 그림으로 알아보자
int a = 20
String b = "메롱"
위에서 만든 배열
이렇게 세 개의 데이터가 존재한다고 생각해 보자 (순서는 위에서 아래로 입력됨)
이런식으로 저장된다!
잘못된 정보가 있으면 댓글로 꼬옥 알려 주세요
배열 공부 끄~~ㅌ