[JAVA] 변수 초기화

2024. 8. 31. 01:20·Back-End/Java
목차
  1. 변수의 초기화
  2. 멤버변수(iv, cv)의 초기화
  3. 명시적 초기화(=), 간단 초기화
  4. 초기화 블럭, 복잡한 초기화
  5. 생성자

[작성일: 2023. 01. 26]

 

목차

     

    변수의 초기화

    • 지역변수(lv)는 수동초기화 해야 함(사용 전 꼭!!!!)
    • 메서드는 호출 스택에 계속 쌓였다가 지워졌다가 하기 때문에 생명주기가 굉장히 짧음. 매번 0으로 초기화하면 성능이 떨어지기 때문에 새로운 값으로 덮어써야 함. (수동 초기화)
    • 멤버변수(iv, cv)는 자동 초기화됨.
    • 타입마다 다르지만 근본적으로는 0으로 초기화됨.
    class InitTest {
    int x; // 인스턴스 변수, 자동 초기화
    int y = x; // 인스턴스 변수(iv)
    void method1() {
    int i; // 지역변수(lv)
    int j = i; // 에러. 지역변수를 초기화하지 않음.

     

     

     

     

     

    멤버변수(iv, cv)의 초기화

    • 클래스 변수(cv): 클래스가 처음 로딩될 때 단 한 번 초기화함.
      • static {} 사용
    • 인스턴스 변수(iv): 인스턴스가 생성될 때마다 초기화함.
      • 생성자 사용
    class InitTest {
    static int cv = 1; // 명시적 초기화(간단 초기화)
    int iv = 1; // 명시적 초기화
    static { cv = 2l } // 클래스 초기화 블럭
    { iv = 2; } // 인스턴스 초기화 블럭(잘 안 씀)
    InitTest() { // 생성자
    iv = 3;
    }
    }

     

     

     

    명시적 초기화(=), 간단 초기화

    • 선언 시 대입 연산자 사용
    class Car {
    // iv를 대입연산자로 초기화
    int door = 4; // 기본형 변수의 초기화
    Engine e = new Engine(); // 참조형 변수의 초기화

     

     

    초기화 블럭, 복잡한 초기화

    • 객체 생성 시 무조건 실행되는 함수
    class StaticBlockTest {
    static int[] arr = new int[10]; // 명시적 초기화
    static { // 클래스 초기화 블럭 - 배열 arr을 난수로 채움
    for(int i=0; i<arr.length; i++) {
    arr[i] = (int)(Math.random()*10)+1;
    }
    }
    }

     

    static {   } - 무조건 최초에 한 번만 실행되는 함수
    - 클래스(cv) 초기화 블럭
    {   } - 객체가 생성될 때마다 생성자보다 먼저 실행되는 함수
    - 생성자들마다 공통적으로 실행하는 내용
    - 인스턴스(iv)초기화 블럭 / (거의 안 씀)

     

     

     

    생성자

    • iv 초기화, 복잡한 초기화에 사용
    Car(String color, String gearType, int door) {
    // 매개변수가 있는 생성자
    this.color = color;
    this.gearType = gearType;
    this.door = door;
    }

     

     

    어려워서 패드로 손코딩...

     

     

     

     

     

     

     

     

     

     


    🐣 해당 게시글은 자바의 정석(남궁성 님) 영상으로 함께 공부하며 요약/정리한 글입니다.
    🐣 입문 개발자가 작성한 글이므로 틀린 내용이나 오타가 있을 수 있습니다.

     

    저작자표시 비영리 변경금지
    1. 변수의 초기화
    2. 멤버변수(iv, cv)의 초기화
    3. 명시적 초기화(=), 간단 초기화
    4. 초기화 블럭, 복잡한 초기화
    5. 생성자
    'Back-End/Java' 카테고리의 다른 글
    • [JAVA] 객체지향 - 호출 스택
    • [JAVA] 객체지향 - 객체 생성, 사용, 배열
    • [JAVA] 객체지향 - 오버로딩
    • [JAVA] 객체지향 - this
    뚜비
    뚜비
    1년차 백엔드&iOS 개발자의 감자 탈출 블로그 🥔🥔
    뚜비의 개발로그1년차 백엔드&iOS 개발자의 감자 탈출 블로그 🥔🥔
    • 뚜비
      뚜비의 개발로그
      뚜비
    • 전체
      오늘
      어제
    • 글쓰기     관리
      • Devlog
        • Back-End
          • Java
          • Spring
          • JPA
          • HTTP
          • Security
          • Back-End
          • Front-End
        • 알고리즘
        • iOS
          • Swift
        • Database
        • Tips
          • Git & GitHub
          • A to Z
        • 프로젝트
        • 생각정리
    • 태그

      데이터베이스
      javascript
      변수
      Spring Security
      성능최적화
      프로그래머스
      백준
      jsp
      객체
      자바
      JPA
      김영한
      DB
      spring
      스프링
      HTTP
      sql
      html
      Java
      최주호
      MVC
      자바스크립트
      게시판만들기
      Swift
      다형성
      의존성주입
      생성자
      알고리즘
      Security
      Database
    • hELLO· Designed By정상우.v4.10.0
    뚜비
    [JAVA] 변수 초기화
    상단으로

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.