배열 : Array

·2024년 3월 7일
0

JAVA

목록 보기
1/7

자바 배울 때 1차 관문이 배열이 아닐까 생각한다
stack이랑 heap이란 개념이 이 부분에서 처음 접하게 돼서 더욱 어려웠던 것 같다
뭔가 배열을 잘 사용하는 것 같아도 스택이랑 힙 개념이 너무 헷갈려서 정리해 보고 완벽히! 이해해 보고 싶어서 정리를 시작하게 되었다 😎
(내가 헷갈리는 것만 정리함 주의)


🤍 배열이란

같은 타입 데이터 여러 개를 하나의 변수명을 사용하여 연속된 공간으로 다루는 것

배열을 사용할 땐, 선언 -> 생성 -> 초기화의 과정을 거쳐야만 한다.
선언과 생성을 동시에 할 수도 있고, 이 세 개를 모두 동시에 할 수 있다.


🤍 1) 배열의 선언 기본 문법

형식 ) 데이터타입 [] 변수명;

  • 선언하게 되는 변수명은 스택(Stack) 영역배열 공간의 주소를 저장할 참조 변수로 사용된다.
  • 이는 데이터 저장할 수 있는 공간이 만들어지기 전이므로 데이터를 저장할 수 없다.

(참고) 크기나 접근은 [] 대괄호를 사용하고
데이터를 저장할 땐 {} 중괄호를 사용한다.

즉 ! 나 배열 만들 거다 ~ 라는 선언만 한 거지 저장할 준비는 안 되어 있다는 것
스택에 참조할, 주소가 저장될 변수만 만들어 놓은 것

코드

int [] arr ;

🤍 2) 배열의 생성 기본 문법

형식 ) 변수명 = new 데이터타입 [배열크기]

  • new 연산자에 의해 힙 (Heap) 영역에 배열 크기만큼의 공간이 생성
  • 해당 배열의 데이터타입은 지정된 데이터타입만 저장 가능하다
  • 생성된 배열 공간의 주소값을 좌변의 변수에 저장한다
  • 배열을 생성하고 나면 자동적으로 지정된 데이터타입의 기본값으로 자동적으로 초기화된다.
    (int -> 0 / String -> null이 저장됩니다)

이제 데이터 저장할 준비가 되었고 알맞은 데이터를 저장하기만 하면 된다

코드

arr = new int [3] ;

🤍 3) 배열의 접근 기본 문법

형식) 변수명[인덱스]

  • 참고로 인덱스는 0부터 시작한다

코드

arr[0] = 1;
arr[1] = 2;
arr[2] = 3;

🤍 4) 동시에 하는 방법

💙 (1) 배열 선언 및 생성을 동시에

형식) 데이터타입 변수명 = new 데이터타입 [배열크기]

코드

int [] arr = new int [3];
  • 해석) 데이터타입은 int[]이며, 크기를 3을 가진 배열을 만들 것이다.

    (처음에 나도 헷갈렸던 건데 배열의 크기가 0부터 시작해서 new int[3]이라고 하면 크기가 4인 배열을 만든다는 건가 3인 배열을 만든다는 건가 싶었는데 그냥 배열의 크기 즉, 크기가 3인 배열을 만든다는구나! 하고 생각하면 된다)

💙 (2) 배열 선언, 생성, 초기화를 동시에

형식 ) 데이터타입 [] 변수명 = {데이터1, 데이터2, 데이터3 ...데이터n }

  • 자동적으로 n개의 저장 공간과 입력한 데이터로 초기화된다
  • 이후 크기 조정과 더 많은 데이터 저장은 불가능하다

코드

int [] arr = {1,2,3};

💙 (3) 배열 선언을 먼저 하고 후에 생성과 초기화를 동시에

형식) 1. 데이터타입 [] 변수명;
2. 변수명 = new 데이터타입 [] {데이터1, 데이터2, 데이터3 ... 데이터n};

코드

int[] arr; 
arr = new int[] {1,2,3}; 

🤍 5) 예시

크기가 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"};

🤍 6) 참고 - 스택과 힙

위에 썼던 배열을 사용해서 이를 설명하자면

System.out.println(animal);

을 콘솔에 찍어보면 [I@27f674d 이런 식으로 주소가 나온다.
앞서 말했던 변수명은 참조 변수로 주소가 저장됨을 다시 한 번 알 수 있는 것이다.

아무래도 글로 암만 적어봤자 눈에 보이지 않으면 알 수 없으니 (내가 그럼 ㅠ) 그림으로 알아보자

int a = 20
String b = "메롱"
위에서 만든 배열
이렇게 세 개의 데이터가 존재한다고 생각해 보자 (순서는 위에서 아래로 입력됨)

이런식으로 저장된다!

잘못된 정보가 있으면 댓글로 꼬옥 알려 주세요
배열 공부 끄~~ㅌ

profile
~*

0개의 댓글