Day 09 :) Static메서드

Nux·2021년 9월 10일
0

자바웹개발

목록 보기
9/105
post-thumbnail

Static 변수, 메서드

정의

  • 정적변수(메서드) 혹은 클래스 변수(메서드)라고 부름
  • 모든 객체가 공통으로 가진 값
  • 변수 앞에 static을 붙이면 static 변수가 됨
int a;
static int a;
  • 객체 생성시 참여하지 않음
  • 객체를 만들지 않아도 사용 가능하며 클래스별로 관리됨
  • 클래스이름.변수명 혹은 클래스이름.메소드명으로 호출
 1. Car.java
 public class Car {
	static void a() {
		System.out.println("안녕하세요");
	}			// Static메서드
}

2. CarApp.java
public class CarApp {
	public static void main(String[]args) {
		Car.a();
	}
}

Static메서드, 변수의 활용

  • Static변수는 상수선언시 주로 사용
  • 멤버변수와 상호작용(초기화, 변경 등)하지 않음
  • Static메서드-Static변수는 조회만 가능

Static변수의 상수화

  • 프로그래밍에서의 상수: 변하지 않는 값
  • 변수 앞에 final을 붙이며, 변수명은 전부 대문자로 표기
final static double PI = 3.14;
Static영역Stack영역Heap영역
클래스가 할당지역변수 할당객체 할당
garbage collector의 메모리 관리 X매개변수 할당garbage collector의 메모리 관리 O
프로그램종료시까지 메모리에 유지됨블럭 내에서만 유지아무도 참조하지 않으면 사라짐

Static메서드와 인스턴스 메서드

  • Static메서드는 Static 변수, Static 메서드만 사용 가능. 인스턴스 메서드(변수)사용 불가
  • 인스턴스메서드는 Static변수,메서드 및 인스턴스 변수,메서드 사용 가능
class Sample{
static int x;
int y;
	static void a(){
    	System.out.println(sample.x);	// 사용가능. Static 메서드에 Static 변수
        System.out.println(y);	// 사용불가. Static메서드에 인스턴스변수
	void a(){
    	System.out.println(sample.x);	// 사용가능. 인스턴스메서드에 Static 변수
        System.out.println(y);	// 사용불가. 인스턴스메서드에 인스턴스변수
}    

0개의 댓글