본문 바로가기
Java

Java_인스턴스멤버와 Static(정적멤버)

by 히예네 2023. 1. 28.
728x90
반응형

Static을 사용하는 이유는??

필드마다 객체 값이 달라야한다면 , 객체마다 다른 필드값을 주는게 맞다.

 

하지만, 객체의 필드값이 모두 같아야한다면?  (이런 경우가 필요하다면? )

객체마다 갖고있다면 메모리 낭비가 너무 심하다. 

그러므로, 어느 한곳에 필드를 위치시키고 객체들이 알아서 찾도록 하는게 좋다!

 

자바는 이런 이유로 클래스 멤버를 인스턴스멤버 / 정적멤버 2개로 구분한다.

 

 

구분 의미
인스턴스멤버 객체마다 갖고 있는 멤버
정적멤버 클래스에 위치시키고 객체들이 공유하는 멤버

 


인스턴스 멤버

:객체를 생성한 후 사용할 수 있는 필드와 메소드

객체 없이는 사용불가능

 

public class Student{

  int age;
  
  void show(){
  system.out.print("age : + age);
  }
  
}

그냥 우리가 쓰던 일반적인 모습을 한 멤버들이 인스턴스멤버이다.

age필드와 show()메소드는 Student클래스의 인스턴스 멤버이기때문에 외부클래스에서 쓰려면

객체를 만들어서 써야한다.

(Static(정적멤버)는 객체를 만들지않고도 쓸 수있다!! )


 

정적멤버와 Static

: 클래스에 고정된 멤버로서, 객체를 생성하지 않고 사용할 수 있는 필드/메소드

 

정적멤버를 쓰고싶다면 ? 앞에 static을 쓰면 된다.

public class Student {

		  static int age;
		  
		  static void show(){
		  System.out.println("안녕");
		  }
		 
}

어떻게 정적멤버를 사용하나? 

객체를 부르지 않고 사용한다. 

 

public class Main {

	public static void main(String[] args) {
		Student.show();
	}
}

클래스를 이용해서 데려온다.

 

출력값

 

 

728x90
반응형

'Java' 카테고리의 다른 글

java 상속 (Inheritance)  (0) 2023.01.29
Java_생성자  (0) 2023.01.28
Java_자바의 메모리  (0) 2023.01.27
Java_메서드 오버로딩, 가변 길이 인자  (0) 2023.01.27
Java_패키지  (0) 2023.01.27