리터럴이란?
보통 리터럴과 상수의 차이에 대해 궁금해하는 사람이 있을 수도 있다.
상수란?
변하지 않는 변수를 의미 ex)클래스와 구조체
기본형에서 파생된 객체나 유도형 같은 데이터를 넣을 수 있음
final int num;
리터럴이란?
데이터 그 자체를 의미한다.
int a=10; //a는 상수가 되고, 10이 리터럴
위 코드 처럼 10이라는 값이 바로 리터럴이다. 하지만 여기서 final키워드를 사용하면 상수가 된다.
※인스턴스는 리터럴이 될 수 없다.
그 이유는 인스턴스(객체)는 동적으로 사용하기 위한 용도로 작성
불변 클래스
데이터가 변하지 않도록 설계를 해놓은 클래스
String str="seok"; //"seok"이라는 문자열이 객체 리터럴이다.
리터럴 선언 방법
리터럴을 선언하는 방법은 변수를 선언함과 동시에 그 값을 지정해주는 표기법이다.
int n=6;
변수의 스코프와 라이프타임
변수의 스코프
변수가 접근할 수 있는 유효 범위
라이프 타임
변수가 유효한 시간(프로그램이 구동되는 동안 변수가 값을 담고 있을 수 있는 주기)
변수의 종류에는 크게 클래스변수, 인스턴스 변수, 로컬변수가 있다.
변수의 종류 | 선언위치 | Scope | Life Cycle |
클래스 변수 | 클래스 영역 | 클래스 전체 | 클래스가 메모리에 올라간 후 프로그램이 종료할 때 |
인스턴스 변수 | 클래스 영역 | static블록과 메소드를 제외한 클래스 전체 | 인스턴스가 생성 후, 메모리에 살아있을 때 까지 |
로컬 변수 | 메소드, 생성자 블럭 내부 | 변수가 선언된 블럭 내부 | 변수가 선언된 블럭을 벗어나기 전까지 |
class Main
{
int x,y; //인스턴스 변수
static int z; //클래스 변수
void run()
{
int a,b; //a,b는 로컬변수
}
}
로컬 변수
a,b는 run()이라는 메소드 안에 선언된 로컬변수이다.
따라서 a,b라는 변수가 run()메소드를 벗어나면 메모리상에서 지워진다.
인스턴스 변수
x,y는 클래스 내부에 선언된 인스턴스 변수이다.
따라서 x,y는 클래스가 종료되기 전, 즉 메모리에 생존해 있을때까지 살아있다.
클래스 변수
클래스변수는 인스턴스변수에 static키워드만 붙이면 된다.
이럼으로써 인스턴스 변수는 각각 고유한 값을 가지지만 클래스변수는 모든 인스턴스가 동일한 값을 공유하게 된다.
따라서 클래스가 메모리에 올라간 후 프로그램이 종료되기 전 까지 생존해있다.
'JAVA' 카테고리의 다른 글
[JAVA] 산술연산자 & 비트연산자 (0) | 2023.03.22 |
---|---|
[JAVA] 타입변환&타입추론 var (0) | 2023.03.22 |
[JAVA] Primitive Type vs Reference Type (0) | 2023.03.21 |
Java의 역사 (0) | 2023.03.12 |
Spring framework 핵심기술 - IoC 컨테이너 (0) | 2023.01.05 |