변수와 메서드

이승준·2021년 7월 16일
1

Java Study

목록 보기
3/12

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


변수의 종류

  • 멤버 변수
    - 클래스 변수
    - 인스턴스 변수 
  • 지역 변수

멤버 변수

  • 선언 위치가 클래스 영역.
  • 인스턴스 변수와 클래스 변수를 멤버 변수가 속해있음.

인스턴스 변수

  • 클래스의 인스턴스를 생성할 때 만들어진다. 따라서, 인스턴스 변수의 값을 읽어 오거나 저장하기 위해서는 먼저 인스턴스를 생성해야한다.
  • 인스턴스는 독립적인 저장 공간을 가지므로 서로 다른 값을 가질 수 있다.
  • 인스턴스마다 고유의 값을 저장해야 할 경우, 인스턴스 변수로 선언한다.

클래스 변수

  • 인스턴스 변수 앞에 static 키워드를 붙이면 된다.
  • 클래스 변수는 모든 인스턴스가 공통된 저장공간(변수)를 공유하게 된다.
  • 모든 인스턴스들이 공통적인 값을 유지해야하는 경우, 클래스 변수로 선언한다.

지역 변수

  • 메서드 영역에 선언된 변수.
  • 메서드 내에서만 사용이 가능하다.
  • 메서드가 종료되면 소멸되어 사용이 불가능 하다.
  • 또한, for문 또는 while 문의 블럭 내에서 선언된 지역 변수들은 해당 블럭 내에서만 사용이 가능하며, 해당 블록을 벗어나면 소멸한다.

클래스 메서드(static메서드)와 인스턴스 메서드


클래스 메서드

  • 변수에서 그랬던 것과 같이, 메서드 앞에 static이 붙어 있으면 클래스메서드이다. (그렇지 않으면, 인스턴스 메서드)
  • 클래스 메서드도 클래스 변수처럼, 객체를 생성하지 않고도 '클래스이름.메서드이름(매개변수)'와 같은 식으로 호출이 가능하다.
  • 인스턴스 변수나 인스턴스 메서드를 사용할 수 없음.

클래스 메서드와 인스턴스 메서드는 언제 사용할까?

  • 인스턴스 메서드는 인스턴스 변수와 관련된 작업을 하는, 즉 메서드의 작업을 수행하는데 인스턴스 변수를 필요로 하는 메서드이다.
  • 인스턴스 변수는 인스턴스가 생성되어야 만들어지므로 인스턴스 메서드 또한 인스턴스를 생성해야만 호출 할 수 있는 특징이 있다.
  • 클래스 메서드는 인스턴스와 관계없는(인스턴스 변수나 메서드) 메서드를 클래스 메서드로 정의한다.

정리


  1. 클래스를 설계할 때, 멤버변수 중 모든 인스턴스에 공통적으로 사용하는 것에 static을 붙인다.
  2. 클래서 변수는 인스턴스를 생성하지 않아도 사용이 가능하다.
  3. 클래스 메서드는 인스턴스 변수를 사용할 수 없다. 
    1. 인스턴스 변수는 인스턴스가 반드시 있어야 존재할 수 있지만, 클래스 메서드는 인스턴스 생성 없이 호출이 가능하다.
    2. 클래스 메서드 호출 시점 인스턴스가 생성되지 않을 수 도 있기 때문에 금지한다.
    3. 반대로, 인스턴스 메서드에서는 클래스 변수 클래스 메서드 사용이 가능하다. (인스턴스  메서드를 사용하는 시점에서 항상 인스턴스가 생성되어 있기 때문에, static이 붙은 변수나 메서드는 이미 메모리에 존재한다는 것을 의미)
  4. 메서드 내에서 인스턴스 변수를 사용하지 않는다면, static을 붙이는 것을 고려한다.
    1. 메서드 호출시간이 짧아지므로 성능이 향상된다. (static이 붙은 메서드는 이미 고유한 메모리 주소를 갖고 있기 때문에)
    2. static이 안 붙은 메서드는 실행 시 호출되어야할 메서드를 찾는 과정이 필요.
profile
끊임없이 생각하는 주니어 웹 개발자입니다.

0개의 댓글