[JAVA] 변수 초기화

2024. 8. 31. 01:20·Back-End/Java

[작성일: 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;
    }

     

     

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

     

     

     

     

     

     

     

     

     

     


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

     

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

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

    티스토리툴바