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 | 31 |
Tags
- 자료구조
- Service 테스트
- @Version
- 디자인 패턴
- 배열
- do...while
- 테스트 코드
- Controller 테스트
- Entity
- Java
- 배타락
- 스프링 부트
- 자바
- 파스칼 케이스
- 스네이크 케이스
- DTO
- Array
- 마이크로서비스 아키텍처
- 스터디
- 원시 자료형
- 비즈니스 로직
- 트랜잭션 락
- jvm
- Repository 테스트
- 낙관락
- 공유락
- @Query
- springDataJpa
- OOP
- 비링크
Archives
- Today
- Total
menuhwang
[Java] static 이란? 본문
static 이란?
static 변수 = 정적 변수 = 클래스 변수 = 공용 변수
- 객체를 생성하지 않고도 static자원에 접근이 가능
- 자바에서 static 키워드를 사용한다는 것은 메모리에 한 번 할당되어 프로그램이 종료될 때 해제되는 것을 의미
인스턴스 변수 & 스태틱 변수 비교
인스턴스 변수
class Number {
int num = 0;
int add() {
return ++this.num;
}
}
public class Main {
public static void main(String[] args) {
Number num1 = new Number();
Number num2 = new Number();
num1.add();
System.out.println(num1.num) // 1
System.out.println(num2.num) // 0
}
이 경우 객체를 생성하면 각각의 메모리를 할당받기 때문에 add() 메서드를 실행시킨 객체의 메모리값만 변하게 된다.
스태틱 변수
- 메모리 절약의 이점
- 변수 값 공유
class Number {
static int num = 0;
int num2 = 0;
int add() {
return ++num;
}
int add2() {
return ++num2;
}
}
public class Main {
public static void main(String[] args) {
Number num1 = new Number();
Number num2 = new Number();
num1.add();
System.out.println(num1.num) // 1
System.out.println(num2.num) // 1
System.out.printlb(Number.num) // 1
}
}
스태틱 변수로 선언된 경우 객체를 생성하면 메모리값을 공유하게 된다.
따라서 여러 객체를 생성하고 add() 메소드 실행 시 변수는 같은 값을 갖는다.
인스턴스 메소드 & 스태틱 메소드
인스턴스 메소드
- 객체 생성 필요.
- 객체를 생성한 후 사용되기 때문에 메소드 내부에서 인스턴스 변수 및 스태틱 변수 사용 가능.
스태틱 메소드
- 정적메서드를 선언하면 객체를 생성하지 않고 메소드를 사용할 수 있다.
- 스태틱 메소드 안에서는 스태틱 변수만 접근할 수 있다.
- 유틸리티 메서드 작성에 많이 사용된다.
'자바' 카테고리의 다른 글
[OOP 트레이닝] 주차장 시스템 - (1) (0) | 2023.06.28 |
---|---|
[Java] JVM, 자바 실행부터 메모리 구조까지 (0) | 2022.12.11 |
[Java] 오버라이딩 (feat. 오버로딩) (0) | 2022.09.26 |
[Java] 상속 (0) | 2022.09.26 |
[Java] 클래스와 객체 (1) | 2022.09.22 |
Comments