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
- Effective Java
- exception
- spring-security
- JVM
- 보안 그룹
- https
- try-with-reources
- 피리티어
- 자바스터디
- ec2
- Unchecked Exception
- Checked Exception
- 이펙티브 자바
- AWS
- 생각정리
- 바이트코드
- Spring
- 파라미터 그룹
- Final
- 자바
- 이펙티브자바
- Annotation
- bytecode
- 예외
- error
- java
- springboot
- RDS
Archives
- Today
- Total
개발 일지
자바 스터디 1주 차 발표 준비 자료입니다.
https://github.com/WanOnPreStudy/JavaQuestionStudy
GitHub - WanOnPreStudy/JavaQuestionStudy: 백엔드 자바 질문 스터디
백엔드 자바 질문 스터디. Contribute to WanOnPreStudy/JavaQuestionStudy development by creating an account on GitHub.
github.com
간단하게 정리하고 들어가자면…
- 자바의 변수는 선언된 위치에 따라서 클래스 변수, 인스턴스 변수, 지역 변수로 구분합니다
- 클래스 변수와. 인스턴스 변수는 묶어서 멤버 변수라고도 하며 클래스 영역 내에 선언되어 있습니다
- 멤버 변수 중 static 붙은 것은 클래스 변수, 붙지 않는 것이 인스턴스 변수입니다.
- 클래스 영역 이외에 위치에 선언된 변수는 지역변수입니다. (메서드, 생성자, 초기화 블록 내부)
public class Test {
static int classValue = 5; // 클래스 변수
int instanceValue = 5; // 인스턴스 변수
void method() {
int localValue = 5; // 지역 변수
}
}
인스턴스 변수
- 인스턴스 변수는 인스턴스가 생성될 때 생성됩니다.
- 그렇기 때문에 인스턴스 변수의 값을 읽어오거나 저장하려면 객체의 인스턴스를 먼저 생성해야 합니다.
- 인스턴스가 생성될 때마다 생성됨으로 각기 다른 값을 가질 수 있습니다.
- 각각의 인스턴스마다 고유의 값을 가져야 할 때는 인스턴스 변수로 선언합니다.
접근방법
Test test = new Test();
System.out.print(test.instanceValue);
클래스에 대한 인스턴스 객체를 생성하고, 인스턴스 객체를 통해 변수에 접근할 수 있습니다.
클래스 변수
- 클래스 변수는 인스턴스 변수에 static만 붙여주면 됩니다.
- 클래스 변수는 클래스가 로딩될 때 생성되어(그러므로 메모리에 딱 한 번만 올라갑니다.) 종료될 때까지 유지됩니다.
- 모든 인스턴스 가 하나의 저장공간을 공유함으로 공통된 값을 공유하게 됩니다.
- 그렇기 때문에 한 클래스의 모든 인스턴스들이 공통적인 값을 가져야 할 때 클래스 변수로 선언합니다.
- 또한 인스턴스 변수의 접근법과 다르게 인스턴스를 생성하지 않고 클래스 이름. 클래스 변수명을 통해서 접근할 수 있습니다.
접근방법
System.out.print(Test.classValue);
클래스명으로(인스턴스 없이) 바로 접근 가능합니다.
지역 변수
- 변수 선언문이 수행되었을 때 생성됩니다.
- 메서드 내에서 선언되며 메서드 내에서만 사용할 수 있는 변수입니다.
- 메서드가 끝나면 소멸되어 사용할 수 없게 됩니다.
접근방법
public class Test {
static int classValue = 5; // 클래스 변수
int instanceValue = 5; // 인스턴스 변수
void method() {
int localValue = 5; // 지역 변수
System.out.print(localValue); //지역변수 접근
}
}
선언된 메서드 내에서 변수명으로 접근 가능합니다.
정리
+ 추가
Java 8 버전 이전 에는 클래스 컴파일 후 JVM( Java Virtual Machine )에 의해 생성된 메서드 영역 이라는 비힙 메모리의 별도 섹션에 클래스의 정적 변수가 저장되었습니다
Java 8 이후에는 정적 변수 및 메서드는 힙 메모리에 저장됩니다.
'Java' 카테고리의 다른 글
[Java] try-with-resources (0) | 2022.11.16 |
---|---|
[Java] 바이트 코드(2) :: 바이트 코드 예제 (0) | 2022.11.13 |
[Java] 바이트 코드(1) :: 바이트 코드란? (1) | 2022.11.10 |
[Java] Checked Exception, Unchecked Exception, Error (0) | 2022.11.07 |
[Java] final 키워드 (0) | 2022.11.04 |