Code&Data Insights

[ Java Programming ] Static 개념 끝내기 ( Variables & Static Methods ) 본문

Computer Science/Java Programming

[ Java Programming ] Static 개념 끝내기 ( Variables & Static Methods )

paka_corn 2022. 7. 18. 08:55

 

[ Static Variables & Static Methods ] 

 

 

 

계속 헷갈렸던 Static, 

What does "Static" mean? 

=> 자바에서는 객체를 필요할 때마다 메모리에 올려 사용한다. Static은 프로그램의 객체 생성 이전 JVM에 의해 클래스가 load되는 순간에 자동으로 메모리에 올라간다. 

=> 객체 생성 이전에 이미 로딩되는 메모리이기 때문에, non-static 영역(객체 영역)으로는 접근이 불가능하다. 

 

 

 

< Static Variables  = Class Variables > 

Variables(변수)에는 instance variables(iv)class variables(cv)- static 이 존재한다. 

=> instance variables개별 속성(객체마다 다르게 가져야 하는 값), class variables공통 속성을 표현 할 때 사용된다. 

 

class variables(static variables) : global variables(전역 변수)이다. 

=> the same across all instances of the class

=> 객체 레벨로 접근하지 않고, 클래스 레벨로 접근한다. ( 어느 곳에서 접근을 해도 동일한 값을 가지고 있다. )

 

 

 

< Static Methods > 

Methods: A method is a block of code that only runs when called.

- Methods can pass data, known as parameters, into a method. 

- 작업 단위로 문장들을 묶어 이름 붙인 것 --> 코드의 간결화 / 중복 제거 / 관리 용이 / Method 재사용(호출) 가능 

- 객체 지향 개념에서 사용되는 함수(functions)을 지칭 

- Method는 클래스 영역에만 정의가 가능 

- Method 하나에 기능 하나만 포함 

 

Static Methods 

=> Method를 사용하기 위해 객체 생성이 필요하지 않다

=> Instance Variables을 사용하지 않는 method (! iv를 사용할 수 없음 !)

 

=> Instance method는 instance variables, class variable 모두 호출 가능

단! 객체 생성 후

(--> instance method는 객체 생성 후 호출 가능하기 때문에,

instance method 내에 사용된 iv또한 객체 생성으로 사용가능해진 것  ) 

 

==> But, Static Method는 객체 생성 없이 사용 가능하지만 ONLY class variable 호출 가능하다. 

==> Static MethodInstance method도 호출 할 수 없다!

(반면, instance method는 static method를 호출 할 수 있음. ) 

 

WHY?

-> Static method가 instance member(instance variables/instance method)를 쓸 수 없는 이유는, static method 호출 시에 Object가 생성(존재) 되기 전 일 수도 있음. static은 class loader상태에 이미 메모리에 올라가 있기 때문에, 언제나 사용 가능한 것. 

 

 

 

====> 간단히 말하자면, Static variable(Class variable)과 Static method는 클래스 어디에서나 호출,사용이 가능하다 (전역변수 / 객체 생성이 필요하지 않기 때문 ) 

Comments