리터럴 [ literal ]
ㅡ 영단어의 뜻 자체는 '문자 그대로'란 뜻을 가지고 있다.
ㅡ 프로그램에서 직접 표현한 값, 변하지 않는 데이터를 의미 → 상수
int a = 7;
변수 a에 7이라는 값을 초기화하는 식을보면 a는 나중에 다시 다른 값으로 초기화 할 수 있으나, 7이라는 값은 변하지 않는 데이터이다.
7은 그 자체로 그냥 7이며 고정적인 값, 리터럴이라 부를 수 있다.
기본 타입 [ primitive type ]
ㅡ byte, short, int, long / float, double / char / boolean이 기본 타입에 해당
ㅡ 기본 타입 변수는 실제 값을 변수에다가 저장한다.
ex) int b = 3; // 기본 타입 변수 b에 3이 저장, b를 출력하면 3이 나온다.
참조 타입 [ reference type ]
ㅡ 배열, 열거, 클래스, 인터페이스가 참조 타입에 해당
ㅡ 참조 타입 변수는 주소값을 변수에 저장한다. / 주소를 가지며 주소를 통해 객체 참조
ex) String str = "chim"; // 문자열 str를 출력하면 str에 저장된 주소를 찾아가 거기에 있는 chim을 출력(하는 것이라 생각)
주소값을 저장한다는 게 핵심인 것 같다.
읽어보면 도움될 정보 : https://colossus-java-practice.tistory.com/8 (참조 변수)
메모리 영역
ㅡ 자바에서 메모리 영역엔 메소드, 힙, 스택 영역이 존재
메소드 영역
JVM이 시작할 때 생성 / 모든 스레드가 공유하는 영역
정적 필드, 상수, 생성자, 메소드
힙 영역
객체와 배열이 생성되는 병역
인스턴스 객체들은 힙 영역에 있기에 static 메서드가 인스턴스 변수를 사용할 수 없다.
모든 인스턴스 변수(객체)들이 저장되는 곳 / new 연산자를 사용하여 객체 생성 시 힙에 저장
스택 영역
메소드 내 기본 타입 데이터들이 저장 / 기본 타입의 데이터(int, double 등)인 지역 변수, 매개변수들이 저장되는 곳
메소드 호출 시 스택 영역에 스택 프레임이 생기며 그안에 메소드를 호출
메소드 호출 시 메모리가 할당되고 종료 시 메모리에서 사라진다.
'Java' 카테고리의 다른 글
인스턴스 변수 / 클래스 변수(static) / 지역 변수 (0) | 2023.01.04 |
---|---|
객체 배열(Object Array) (0) | 2023.01.03 |
equals()와 == (0) | 2023.01.03 |
클래스와 객체 (Class & Object), 인스턴스 (Instance) (0) | 2023.01.02 |
break, return, continue + for each문 (1) | 2022.12.31 |
댓글