본문 바로가기

자바스프링웹공부(2024)/자바

2024.08.06. 배열 1

반응형

배열(Array)

  :  같은 타입 데이터 여러개를 하나의 변수명을 사용하여 연속된 공간으로 다루는 것. 
  1. 같은 데이터타입만 하나의 배열로 저장가능
  2. 기본 데이터타입과 참고 데이터타입 모두 배열로 저장 가능.
  3. 배열명을 사용하여 여러 데이터 관리 가능.
  4. 배열 내에 자동으로 부여되는 번호(인덱스 index)를 사용하여 배열의 각 요소 접근.
      (인덱스 번호는 0부터 시작하여 배열크기보다 -1번까지 자동으로 부여됨.)
      (ex. 배열 크기가 5일 경우 5개의 데이터 저장가능 & 인덱스는 0 ~ 4까지)
  5. 배열 크기는 배열명. length 속성을 통해 얻을 수 있음.
  6. 배열은 배열 '선언 -> 생성 -> 초기화' 과정을 거쳐서 사용함. 
  7. 한번 생성된 배열의 크기 변경은 불가능.
 
  <배열 선언 기본 문법>
  데이터타입[] 변수명; // 데이터타입에 해당하는 배열 타입으로 변수를 선언
    => 스택(stack)영역에 배열 공간의 주소를 저장할 참조 변수만 생성됨.
    => 단, 아직 데이터를 저장할 수 있는 공간은 생성되기 전이므로 데이터 저장 불가!
 
  <배열 생성 기본 문법>
  변수명 = new 데이터타입[배열크기];
    =>  new 연산자에 의해 힙(Heap)영역에 배열 크기만큼의 배열 공간이 생성되고 
          해당 배열에 저장되는 데이터 타입은 지정된 데이터 타입이 사용되며, 
         생성된 배열 공간의 주소값을 좌변의 변수에 저장.
    => 배열을 생성하고 나면 자동으로 해당 배열의 공간은 지정된 데이터 타입의 기본값으로 자동초기화됨!
          (ex. int = 0, double = 0.0, String=null 등)
    => 또한 생성된 공간은 각각 0부터 배열크기-1 까지 인덱스 자동으로 부여됨.
 
  <배열 접근기본 문법>
  변수명[인덱스]
     => 해당 변수가 가리키는 배열 공간의 지정된 인덱스 번호에 해당하는 요소에 접근 
 
  <배열 선언, 생성 초기화 모두 하나의 문장으로 결합.>
  데이터타입[] 변수명 = {데이터1, 데이터2, .....};
    =>  데이터 갯수 n만큼의 배열공간이 자동으로 생성되고, 해당 값으로 초기화됨. 
  - 또한, 생성된 배열의 크기가 고정이므로 차후 더 많은 데이터 저장 불가.
  =>  만약, 배열 선언을 먼저 수행한 후 별도로 한꺼번에 초기화하는 경우
  - 변수명 = new 데이터타입[] {데이터1, 데이터2,......}
    => 주의!!! 배열크기는 지정하지 않도록 해야한다. 

// 1. 배열 선언
int[] score;
// 스택(stack))공간에 배열 주소를 저장할 참조데이터타입 변수 score가 생성됨.
// => 이때, int 형의 의미는 해당 배열에 저장될 데이터 타입이 정수라는 의미.바로 사용불가!! 

// 2. 배열생성 : 변수명 = new 데이터타입[배열크기];
score = new int[5]; // 정수 데이터 개 저장공간이 생성되고 주소값을 score에 저장함. 
System.out.println(score); // Heap에 생성된 배열의 주소가 출력됨.

// ** 배열 선언 및 생성 동시에 하기 **
데이터타입[] 변수명 = new 데이터타입[배열크기]
int[] arr = new int[10];

// ** 배열선언, 생성, 초기화 동시에 하기 **
// 데이터타입[] 변수명 = {데이터1, 데이터2, ....};
int[] arr2 = {1,2,3};

int[] arr3;
// 배열 생성 문법과 한꺼번에 초기화하는 문법을 사용할때 
// 배열 크기는 데이터의 개수로 자동지정되므로
// 배열 크기 지정을 생략해야 함.

// 가비지 컬렉터의 쓰임...
int[] aArr = {1, 2, 3};
int[] bArr = {4, 5, 6};
int[] cArr = {7, 8, 9};
aArr = bArr; // bArr 주소를 대입함.(!= 배열이 두개가 되는 게 아니다.) 
aArr[2] = 60;// 값 수정.
System.out.println(bArr[2]); // 같은 배열의 주소를 공유하므로 똑같은 값이 찍힌다. 
// 원래의 aArr의 원래 배열 1,2,3 은 가비지 컬렉터(G.C)가 처리해서 메모리 누수를 방지한다.
// 가비지 콜렉터는 heap 공간만 건드리고 stack 공간은 건드리지 않는다.
반응형

'자바스프링웹공부(2024) > 자바' 카테고리의 다른 글

2024.08.12. 메서드  (0) 2024.08.17
2024.08.09. 다차원 배열  (0) 2024.08.09
2024.08.05. break && continue  (4) 2024.08.05
2024.08.05. 중첩for  (0) 2024.08.05
2024.08.02. 반복문( for문, 중첩for문 )  (0) 2024.08.02