[JAVA] 객체지향 - 변수

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

[작성일: 2023. 01. 25]

 

 

변수(Field)

  • 변수의 선언위치가 변수의 종류와 범위(Scope)를 결정함.
    • 클래스 안의 변수에는 크게 세 종류가 있음.
    • 클래스 변수와 인스턴스 변수를 Field라고 함.
class variables  {  //1. 클래스 영역
  int iv;           //  인스턴스 변수(iv)
  static int cv;    // 클래스 변수(static 변수, cv)

void method() {   // 2. 메서드 영역
  int iv = 0;     // 지역변수(lv)                   
  }
}

 

변수의 종류 선언위치 생성 시기
클래스 변수
(class variable)
클래스 영역 클래스가 메모리에 올라갈 때(자동, 객체 생성 필요없음.)
인스턴스 변수
(instance variable)
인스턴스(객체) 생성시
지역 변수
(local variable)
메서드 영역 변수 선언문 수행 시(메서드 종료시 자동 소멸)
메서드, 생성자, 초기화 블럭 내부에 선언

 

 

 

 

 

클래스 변수(정적 변수)

  • 모든 객체가 공유하는 변수
  • 변수 앞에 static 키워드를 사용함.
  • 객체 생성 없이도 사용 가능하며 클래스명.클래스변수명과 같이 사용함.
    • ex) Card.width = 200;
  • 클래스가 로딩될 때 생성되고 프로그램이 종료될 때 소멸함.
  • 아무 때나 사용 가능하며, 공통적으로 유지되어야 하는 속성에 static을 사용함.

 

 

 

 

 

인스턴스 변수(전역 변수)

  • 인스턴스 = 객체
    • ex) 트럭은 객체이다. 트럭은 자동차의 인스턴스이다.
    • 설계도로 만든 제품 - 인스턴스
  • 각 인스턴스의 개별적인 저장공간. 인스턴스마다 다른 값 저장 가능.
  • 객체 생성 시에 생성되고 참조변수가 없을 때 가비지컬렉터에 의해 자동제거됨.
  • 변수 앞에 static 없음
  • 객체마다 다른 개성을 가지고 있으며 객체 생성을 해야만 사용 가능한 변수
class Card {
  String kind;   // 무늬 
  int number;   // 숫자    ➡️ 인스턴스 변수(iv)
  // 개별값 , 객체마다 다르게 유지되어야 하는 값

  static int width = 100;   // 폭
  static int height = 200;  // 높이   ➡️ 클래스 변수(cv)

  Card c = new Card(); // 객체 생성
    
  // 객체 사용
  c.kind = "HEART";
  c.number = 3;
    
  // cv는 앞에 참조변수를 붙여도 되지만 클래스 이름을 붙여주는 것이 좋음
  Card.width = 200;
  Card.height = 200;
}

 

 

 

 

 

지역 변수

  • 메서드(함수), 조건문 내에서 선언되며 메서드의 종료와 함께 소멸
  • 메서드 영역이 끝나면 소멸되기 때문에 변수 이름이 같아도 상관없음.
  • 매개변수도 지역변수
int add(int x, int y) {
  int result = x + y;
  return result; // 메서드 영역 
 } // 메서드 종료시 지역변수 소멸
 
 
 // 다른 메서드 영역에서 같은 변수명 사용해도 괜찮음
int multiply(int x, int y) { 
  int result = x * y;
  return result; // 메서드 영역
}

 

 

 

 

 

 

 

 

 

 


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

 

저작자표시 비영리 변경금지 (새창열림)
'Back-End/Java' 카테고리의 다른 글
  • [JAVA] 객체지향 - 메서드
  • [JAVA] 객체지향 - 역사, 인스턴스, 클래스
  • [JAVA] 배열
  • [JAVA] 기타 제어문 - break, continue
뚜비
뚜비
1년차 백엔드&iOS 개발자의 감자 탈출 블로그 🥔🥔
  • 뚜비
    뚜비의 개발로그
    뚜비
  • 전체
    오늘
    어제
  • 글쓰기     관리
    • Devlog
      • Back-End
        • Java
        • Spring
        • JPA
        • HTTP
        • Security
        • Back-End
        • Front-End
      • 알고리즘
      • iOS
        • Swift
      • Database
      • Tips
        • Git & GitHub
        • A to Z
      • 프로젝트
      • 생각정리
  • 태그

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

티스토리툴바