Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 이메일인증
- 앱개발
- 깊이우선탐색
- 알고리즘
- 1260
- 코딩
- nodejs
- 노드개발
- springboot
- 브실이의입시전략
- static final
- 코테
- Python
- 실버5
- 코딩테스트
- 너비우선탐색
- BFS
- 노드프로젝트
- email인증
- Java
- 프로그래머스
- 노드개발자
- Gmail인증
- 쪽지기능
- 백준 2667
- 백준
- 파이썬
- DFS
- SWEA
- 자바
Archives
- Today
- Total
데옹의 블로그
[Spring Boot] Java에서 final과 static 본문
뭐든 확실하게 짚고 넘어가는 것이 좋다고...
그래서 오늘은 final과 static에 대해서 그냥 알아보고 가는 글을 쓰고 가려고 합니다.
왜 궁금했냐면, java 공부하는데 값을 변하게 하지 않기 위해선 static을 쓴다는데 밑엔 또 final이 똑같은 의미로 쓰여져 있더라고요. 그래서 궁금했어요^^
final
- 변수에 적용되면 변수의 값을 한 번 할당하면 변경할 수 없습니다. 즉 변수를 상수로 만드는데 여기서 상수는 수학에서의 상수가 아닌 [항상 상]을 써서 변하지 않는 수라고 합니다.
- 메소드에 적용되면 메소드가 하위 클래스에서 오버라이딩 될 수 없습니다. 즉, 메소드에서의 구현이 모든 하위 클래스에서 변경될 수 없습니다.
- 클래스에 적용되면 클래스가 하위 클래스로 확장될 수 없습니다. 즉, 다른 클래스가 해당 클래스를 상속받는 것을 방지합니다.
- 선언과 동시에 값을 주면 절대로 값을 변경할 수 없습니다. 근데 그냥 값을 주지 않고 생성한 뒤, 객체를 생성할 때 값을 주는 방법은 가능합니다.
static
- 변수에 적용되면 해당 변수가 클래스의 모든 인스턴스에서 공유됩니다. 변수가 개별 객체가 아닌 클래스 자체에 속하게 됩니다. (인스턴스간에 공유되어야 하는 데이터에 사용됨)
- 메소드에 적용되면 해당 메소드가 클래스 자체에 속하고, 특정 인스턴스와는 관계가 없음을 나태냅니다.
- 클래스의 인스턴스를 생성하지 않아도 클래스 자체에서 직접 호출할 수 있습니다.
요약하자면 final은 상수를 선언하거나 변수/메소드/클래스의 수정을 방지합니다.
static은 모든 인스턴스 간에 공유되거나 외부 클래스의 인스턴스 없이도 접근할 수 있는 클래스 수준의 멤버를 정의합니다!
근데 두 개를 다 쓴다..? 바로 알아봅시다.
static final
정적이고 최종이면.. 결국 상수를 선언할 때 사용됩니다.
final 만으로 충분히 상수가 되지 않냐.. 왜 상수가 된다고 해놓고 이런 게 튀어나오냐... 바로 위에서 말한
"그냥 값을 주지 않고 생성한 뒤, 객체를 생성할 때 값을 주는 방법은 가능합니다."
라는 부분 때문입니다. 선언할 때 값을 주면 상수지만, 객체를 생성할 때 값을 주는 것은 상수라고 하기엔 좀 애매하죠.
이게 진짜 최종병기 활입니다.
'SpringBoot' 카테고리의 다른 글
[SpringBoot] 동시성 문제 (0) | 2023.06.21 |
---|---|
[Spring Boot] A problem occurred configuring root project '...'. (Intellij)(ERROR) (0) | 2023.03.18 |
[Spring Boot] JAR vs WAR (0) | 2023.03.18 |
[SpringBoot] Google Email 인증 코드 mail 보내기 (JDBC) (6) | 2023.01.21 |