Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

static, final, static final #17

Open
mywnajsldkf opened this issue Nov 3, 2022 · 0 comments
Open

static, final, static final #17

mywnajsldkf opened this issue Nov 3, 2022 · 0 comments
Labels
개념 헷갈리는 개념들을 정리

Comments

@mywnajsldkf
Copy link
Owner

static

  • 객체 생성 없이 사용할 수 있는 필드와 메서드를 생성하고자 할 때 사용
  • 공용 데이터에 해당하거나 인스턴스 필드를 포함하지 않는 메서드를 선언하고자 할 때 이용

선언 방법

public class testClass {
   static int testField = 10;
   static int plusMethod(int x, int y){return x+y; }
}

클래스이름.필드로 사용하거나,

int ans = testClass.plusMethod(1, 2);
int ans = testClass.testField + 2;

객체 참조 변수를 만들어서 사용한다.(이 방법은 추천 X)

TestClass tc = new TestClass();
int ans = tc.plusMethod(1,2);

정적 메서드나 객체 참조 없이 바로 사용 가능하여 인스턴스 필드나 메서드, this 키워드 사용 불가

public class TestClass{
   static int field1 = 15;
   int field2;
   
   void testMethod(){}
   static void method(){}
   static int plusMethod(int x, int y){
      this.field2 = 10;   -> X
      this.method1();   -> X
      field1 = 10;   -> O
      this.method1();   -> O

객체 생성 후 사용할 수 있으므로, 객체 참조 없이 사용하는 정적 메서드는 사용할 수 없다.

final

최종적으로 값이 저장되면 최종적인 값이 되므로, 수정이 불가능하다.

public class Shop{
  final int closeTime = 21;   // 선언과 동시에 값을 주는 방법
  final int openTime;           

  public Shop(int openTime){
      this.openTime = openTime;  // 객체를 생성할 때 생성자(public Shop)에 의해 값을 주는 방법
   }
}

static final

"고정된 + 최종적인" -> 상수를 선언하고자 할 때 사용된다.

static final double PI = 3.141592;

불변의 값을 가진다. 객체마다 저장될 필요가 없으며(static의 성질) + 여러 값을 가질 수 없다(final의 특징)

Ref: https://gobae.tistory.com/3

@mywnajsldkf mywnajsldkf added the 개념 헷갈리는 개념들을 정리 label Nov 3, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
개념 헷갈리는 개념들을 정리
Projects
None yet
Development

No branches or pull requests

1 participant