2주차 : 정적 배열(Static Arrays)

2024. 12. 21. 01:03·🏕 멋사 Java 백엔드 13기/자료구조

📕 배열(Array)


  • 데이터 타입이 동일한 여러 값을 하나의 변수 이름으로 관리하는 자료 구조
  • 연속된 메모리 공간에 데이터를 저장
  • 각 요소(element)에 인덱스(주소)를 사용해 접근한다.
  • 크게 정적 배열(Static Array)과 동적 배열(Dynamic Array)으로 나뉜다.
    • 추후 동적 배열 파트에서 둘의 차이를 비교할 예정. 

📕정적 배열(Static Array)


  • 컴파일 시점에 크기, 데이터 타입이 결정되는 배열
  • 이후 배열의 크기가 변경될 수 없음.

📗 특징


  • 배열 크기 고정 : 선언 시 정한 크기로 고정됨
  • 데이터 타입 고정 : 하나의 배열에 하나의 자료형만 선언됨 
  • 연속된 메모리 공간에 저장됨
  • 인덱스를 통해 요소에 접근 
  • 컴파일 시 stack 영역에 할당됨 

 

📘 메모리 영역

 이번 주에 다룰 정적 배열과 동적 배열의 이해를 위해서 메모리 영역을 간단하게 정리하였다.

  1. Code : 실행할 프로그램의 코드가 저장되는 영역
  2. Data : 프로그램의 전역 변수, 정적 변수가 저장되는 영역. 프로그램 시작 시 생성되며 종료 시 삭제됨.
  3. Heap : 사용자에 의해 동적으로 할당되고 해제되는 영역.
  4. Stack : 지역변수와 매개변수가 저장되는 영역. 스택 구조(LIFO; Last in, First out)

 

📗 구조


int[] example = {1, 2, 3, 4;

 

index 0 1 2 3
value 1 2 3 4

 

📗 장단점


장점

  • 구현 난이도 낮음
  • 메모리 사용량 예측 가능 : 배열 크기가 미리 고정됨
  • 인덱스 통한 빠른 데이터 접근 가능

단점

  • 크기 고정 : 실행 중 배열의 크기를 변경할 수 없어 유연성이 떨어짐
  • 스택 메모리 사용으로 인해 큰 크기 배열 선언이 어려움
    • 함수에서 큰 배열을 선언했을 때 배열이 생성 및 초기화되며 스택 오버플로우가 발생할 수 있음. 

📗 예시 코드


 

public class Main {
    public static void main(String[] args) {
        int[] scores = {85, 90, 78, 92, 88};
        int sum = 0;

        for (int score : scores) { // 향상된 for문 사용
            sum += score;
        }

        System.out.println("평균 점수: " + (sum /scores.length));
    }
}

 

 

📗 참고 자료 


1. 그래서, 스택이랑 힙이 뭔데? : https://www.jiwon.me/explain-heap-and-stack/

2. [자료구조] 정적 배열(Array)과 동적배열(Vector) : https://jinhos-devlog.tistory.com/entry/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-%EC%A0%95%EC%A0%81%EB%B0%B0%EC%97%B4Array%EA%B3%BC-%EB%8F%99%EC%A0%81%EB%B0%B0%EC%97%B4Vector

 

'🏕 멋사 Java 백엔드 13기 > 자료구조' 카테고리의 다른 글

1주차 : 복잡도(Complexity)와 Big-O notation  (2) 2024.12.13
'🏕 멋사 Java 백엔드 13기/자료구조' 카테고리의 다른 글
  • 1주차 : 복잡도(Complexity)와 Big-O notation
Cofish
Cofish
  • Cofish
    Codesea
    Cofish
  • 전체
    오늘
    어제
    • 분류 전체보기 (19)
      • 🏕 멋사 Java 백엔드 13기 (17)
        • TIL (15)
        • 자료구조 (2)
      • 네트워크 (2)
        • TCP•IP (2)
      • 🎨 블로그 꾸미기 (0)
      • 💬 일상 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    db 기초
    부트캠프
    MySQL
    멋쟁이사자처럼 #부트캠프
    디자인 패턴
    #멋쟁이 사자처럼
    멋쟁이 사자처럼
    java 기초
    백엔드 java 부트캠프
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
Cofish
2주차 : 정적 배열(Static Arrays)
상단으로

티스토리툴바