선언 위치에 따른 변수의 종류

hongxeob·2022년 12월 19일
0

Java

목록 보기
3/7
post-thumbnail

선언 위치에 따른 변수의 종류

클래스 영역 : 변수 선언만 가능 (값을 넣는건 아직 불가능)

인스턴스 변수(instance var)

  • 클래스 영역에서 선언, 클래스와 인스턴스가 생성될때 만들어짐.
  • 독립적인 저장공간을 갖는다.
  • 서로 다른 값을 가질 수 있다.
  • 객체 생성을 해야 만들 수 있다
  • tip 코드를 짤 때 개별 속성은 인스턴스 변수로 -> c(참조변수).kind(속성) 형식

    💡 객체 : 쉽게 생각하면 iv(인스턴스)들을 모아 놓은것
    예를 들면 클래스가 TV설계도라고 하면, 객체는 그 기능들을 모아 놓은 진짜 TV이다


클래스 변수

  • 클래스 영역에서 선언. 인스턴스 변수 앞에 static을 붙이기만 하면 된다
  • 모든 인스턴스가 공통된 저장 공간을 공유하게 됨.
  • 한 클래스 안의 모든 인스턴스들이 공통적인 값을 유지해야 하면 클래스 변수로 선언 해야함
  • 인스턴스 변수와 달리 인스턴스를 계속 생성 하지 않아도 언제든 사용 가능 -> 객체 생성 필요 없고,아무데나 만들 수 있다.
  • 하지만 static 메서드는 인스턴스 메서드를 호출하지 못한다!!
  • 메서드에 static을 붙이는 경우 : 인스턴스 변수를 사용하지 않아도 될 때!

    왜 static 메서드는 인스턴스 멤버를 쓸 수 없을까?
    -> static 메서드 호출시 객체(인스턴스 변수 묶음)가 없을 수도 있으니까!
    but.. 인스턴스 변수나,인스턴스 메서드에서는 static이 붙은 멤버들을 사용하는것은 언제나 가능!

  • tip 코드를 짤때 공통적인 속성은 클래스 변수(static)로 -> Card.width (클래스이름.변수)
class MyMath {
        long a, b; //인스턴스 변수

        long add() { //인스턴스 메서드
            return a + b; //인스턴스 변수
        }

        static long add(long a, long b) { //클래스 메서드
            return a + b; //지역 변수
        }
    }

메서드 영역 : 메서드 내부에서 행동

  • 지역변수(local variable) : 메서드내에서 생성. 메서드가 종료되면 자동 소멸

[이해에 더 도움이 된 사이트] : https://easywebs.tistory.com/29

profile
걍 하자 저스트 뚜잇

0개의 댓글