필드 (Field) - 변수

DONI·2021년 8월 17일
0

Java

목록 보기
27/46
post-thumbnail

🏹 필드(Field)

객체의 속성을 정의하는 부분


🏹 변수의 종류

  1. 클래스 변수 : static 키워드를 가지고 필드에 선언하는 변수 (Static 메모리 영역 사용)
  2. 인스턴스 변수 : static 키워드 없이 필드에 선언하는 변수 (Heap 메모리 영역 사용)
  3. 지역 변수 : 메서드, 생성자, 초기화 블록 내부에 선언하는 변수 (Stack 메모리 영역 사용)

   ⭐ 클래스 변수와 인스턴스 변수를 묶어 멤버 변수라고도 한다.


🏹 변수의 특징

  • 클래스 변수

    • 다른 클래스에서도 호출 가능
    • 여러 번 인스턴스화 해도 하나의 공통적인 저장공간을 가짐
  • 인스턴스 변수

    • 같은 클래스에서 호출 가능
    • 인스턴스화 할 때마다 서로 다른 저장공간을 가짐
    • 독립적인 저장공간을 가지므로 서로 다른 값을 가질 수 있음
  • 지역 변수

    • 선언한 메서드, 생성자, 초기화 블록 안에서만 사용 가능
    • 블록( { } )을 벗어나면 소멸되어 사용 불가
    • 다른 영역에서 접근할 수 없기 때문에 보안성이 뛰어남

🚩 소스코드

package kh.oop1.day03.exam;
public class FieldExam {
	// [접근제한자] [예약어] 자료형 변수명 [= 초기값];
	
	// 클래스 변수
	// 모든 객체가 공통적으로 속성을 가질 때 사용 (메모리 영역에 같이 생성)
	public static int var1;
	
	// 인스턴스 변수
	// 각각의 객체(인스턴스)마다 개별적인 속성을 가져야 할 때 사용
	public int var2;
	private int var3; // 캡슐화 원칙으로 private 사용
	int var4; // 접근제한자 생략 시 default 접근제한자
	
	// 메서드
	public String method1() {
		String var5 = "메서드 안의 지역변수"; // 지역 변수
		return var5;
	}
		
	public static String method2() {
		String var6 = "static 안의 지역변수"; // 지역 변수
		return var6;
	}
	
	// 생성자
	public FieldExam() {
		String var7 = "생성자 지역변수"; // 지역 변수
		System.out.println(var7);
	}
	
	// 초기화블록
	{
		String var8 = "초기화블록 지역변수"; // 지역 변수
		System.out.println(var8);
	}

}
package kh.oop1.day03.run;
import kh.oop1.day03.exam.FieldExam;
public class Run {
	public static void main(String[] args) {
		// 클래스 변수
		// 클래스명 뒤에 '.'을 입력해 해당 클래스 변수, 메서드 사용 가능
		System.out.println(FieldExam.var1);
		System.out.println(FieldExam.method2());
		
		// 멤버 변수
		// heap 메모리 영역에 객체 생성 후 변수나 메서드에 접근 가능
		FieldExam fe = new FieldExam();
		System.out.println(fe.var2);
		System.out.println(fe.method1());
	}

}

🧶 출력 결과

0
static 안의 지역변수
초기화블록 지역변수
생성자 지역변수
0
메서드 안의 지역변수

profile
틀린 내용이 있다면 댓글 또는 이메일로 알려주세요 ❤ꔛ❜

0개의 댓글