Jaeyoung Kim
나의 개발 공부 일지
Jaeyoung Kim
전체 방문자
오늘
어제
  • 분류 전체보기 (77)
    • WIL👨‍🏫 (16)
    • 🤖Algorithm (29)
    • 🖥CS (20)
      • 기술면접대비🔎 (10)
    • ✍️개발로그 (10)

블로그 메뉴

  • 홈
  • 방명록
  • 글쓰기
  • 설정

공지사항

인기 글

태그

  • WIL
  • 데이터자료구조
  • til
  • Java
  • rest
  • 프로그래머스
  • 백준2920
  • N-gram parser
  • querydsl
  • 트랜잭션
  • 백준
  • SQLD
  • API
  • sql
  • 항해99
  • 회고록
  • 개발로그
  • transaction
  • HTTP
  • 자바

최근 댓글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
Jaeyoung Kim

나의 개발 공부 일지

[Java] static, final, staic final 차이
🖥CS/기술면접대비🔎

[Java] static, final, staic final 차이

2022. 11. 17. 18:32
728x90

기술면접 대비 - static, final, staic final 차이

들어가며

오늘은 자바의 static, final 키워드 그리고 static final 간의 차이를 정리해보고자 한다.


static

public class PlusClass{
  static int field1 = 15;
  static int plusMethod(int x, int y){ return x+y; } 
  
  public static void main(String[] args){
  	int ans1 = PlusClass.plusMethod(15,2);
	int ans2 = PlusClass.field1 + 2;
  }
}

static은 "고정된" 이라는 의미를 가진다.

메모리를 공유하여 사용하기 때문에 필요할 때 바로바로 호출하거나 데이터를 가져오는게 가능하다.

즉, 별도의 객체 생성없이 사용할 수 있는 필드와 메서드를 생성하려할 때 활용된다.

공용데이터에 해당하거나 인스턴스 필드를 포함하지 않는 메서드를 선언하고자 할 때 이용한다.

 

final

final은 "최종적인" 이라는 의미를 가진다.

즉, 해당 변수는 값이 저장되면 최종적인 값으로 설정되므로 수정이 불가능하다는 의미이다.

변수, 함수, 클래스의 명시적 제한을 나타내기 위해 사용되며, 적절한 final 사용으로 코드 가독성을 높일 수 있다.

 

상수 정의에 사용

상수에 언제든 값을 한 번 저장하고 다음에 다시 바꾸지 않을 때 사용한다.

형태 :    final 타입명 상수명 

final int a;
//final int a=1; 상수 선언과 함께 값을 정의해도 된다.
Scanner s= new Scanner(System.in);
a=s.nextInt();
//a=10; 오류 (값을 변경할 수 없다)
System.out.println(a);
메서드에 사용

오버라이딩(재정의)을 못하게 만든다.

형태 :   final 반환명 메서드명 (매개변수) {} 

class Test{
	public final void test2(){
    	//내용정의
	}
}

public class Main extends Test{
	//public test2(){} compile error: final method는 오버라이딩 못함
}
클래스에 사용

상속을 못하게 만든다.

형태 :   final class 클래스명{} 

final class Test{
	int test;
}
//class Main extends Child{} final class는 상속할 수 없다

 

static final

static final double PI = 3.141592;

static final은 앞서 설명한 static과 final을 합쳐서 생각해보면 된다. "고정된" + "최종적인"의  의미로, 상수를 선언할 때 사용된다.

즉, static final은 객체(인스턴스)가 아닌 클래스에 존재하는 단 하나의 상수이다. 즉, 객체마다 값이 바뀌는 것이 아닌 선언과 동시에 초기화가 필요한 클래스 상수를 의미한다.


Reference

Go devlog - [Java] static, final, static final의 차이

guccin - [Java] static과 final의 차이가 뭘까?(feat. JVM 메모리)

Geun LAB - [Java] final 과 static final 차이

 

728x90

'🖥CS > 기술면접대비🔎' 카테고리의 다른 글

ERD와 정규화 과정  (0) 2022.12.29
http와 https  (2) 2022.12.02
[Java] 접근 제어자(private, default, protected, public)  (0) 2022.11.02
Java Object Class  (0) 2022.10.25
Restful  (0) 2022.10.22
    '🖥CS/기술면접대비🔎' 카테고리의 다른 글
    • ERD와 정규화 과정
    • http와 https
    • [Java] 접근 제어자(private, default, protected, public)
    • Java Object Class
    Jaeyoung Kim
    Jaeyoung Kim
    보다 안정적인 코드 구현을 꿈꾸는 백엔드 개발자 지망생

    티스토리툴바