JAVA
[JAVA]자바의 변수(Variable), 자료형(Data type), Heap영역, Stack 영역
바켠주
2024. 3. 18. 01:34
728x90
변수(Variable)란?
- 어떤한 값을 저장하고자 할 때 사용하는 메모리 공간
- 생성하는 즉시 값을 넣어야 한다. (초기화)
- 다양한 자료형을 담을 수 있다.
변수 선언하기
[데이터 타입] [변수명] = [저장할 값];
int num = 1;
String str = "hello";
변수명 생성 규칙
- 영문 문자와 숫자 사용
- 대소문자 구분
- 길이에 제한이 없다.
- 예약어를 사용할 수 없다
- 첫 글자는 문자 $, _이외 문자나 숫자로 시작할 수 없다.
- 의미를 쉽게 파악할 수 있도록 구체적으로 작성한다.
예약어란?
프로그래밍 언어에서 이미 문법적인 용도로 사용되고 있는 것들 (if, else, int, String, for 등)
변수명 표기법
▶카멜 표기법(Camel Case)
- 예) String studentNameAge
- 각 단어의 첫 문자를 대문자로 표기하되 맨 처음 문자는 소문자로 표기한다.
▶ 파스칼 표기법(Pascal Case)
- 예) String CarNumberName
- 카멜 표기법과 유사하지만 맨 처음 문자도 대문자로 표기한다.
▶ 헝가리안 표기법(Hungarian Notation)
- 예) String strCarNumber
- 변수명 앞에 데이터 타입을 표기한다.
▶ 팟홀 표기법(Pothole Case)
- 예) String car_number_name
- 단어 사이에 언더바를 넣어서 표기한다.
변수는 선언된 블록 내에서만 사용이 가능하다!!
이렇게 함수 내에서 선언된 변수를 지역변수라고 한다.
public class Example {
public static void main(Sttring[] args) {
if(true) {
int n = 5;
System.out.println(n);
}
}
}
자료형(data type)이란?
- 자바 언어가 처리할 수 있는 데이터의 종류
- 모든 변수에는 자료형이 존재하며 자료형에 따라 값의 형태와 크기가 변한다
- 기본 자료형과 참조 자료형으로 구분할 수 있다.
기본자료형
- 실제 데이터 값 저장
- 정수, 실수 ,논리 타입으로 분류된 8개의 자료형이 있고 각각 크기가 다르고 기본값이 정해져 있다.
- 정수형, 실수형, 논리형
▶정수형 (byte, short, int, long)
메모리 사용 크기 | 표현 범위 | |
byte | 1byte | -128 ~ 127 |
short | 2byte | -32768 ~ 32767 |
int | 4byte | -2147483648 ~ 2147483647 |
long | 8byte | -9223372036854775808 ~ 9223372036854775807 |
* long 타입을 사용할 시 int 범위를 벗어났다면 숫자뒤에 l 또는 L을 반드시 붙여야한다.
long num1 = 10000000000L;
long num2 = 10000000000l;
▶ 실수형 (float, double)
메모리 사용 크기 | 정밀도 | |
float | 4byte | 7자리 |
double | 8byte | 15자리 |
*float 형은 반드시 뒤에 f 또는 F를 붙여야한다.
float num1 = 42.195F;
float num2 = 21.0975F;
▶ 문자형 (Char)
- 문자 그대로를 저장하는 것이 아닌 유니코드라는 숫자로 값을 변화해 저장
- 문자형은 데이터를 저장할 때 작은 따옴표(')로 감싼다.
유니코드란?
전 세계의 문자를 일관되게 표현할 수 있도록 설계된 표준
▶ 논리형 (boolean)
- 논리값이 true false를 저장
참조자료형
- 데이터가 저장되어 있는 메모리 번지를 저장
- 배열형, 열거형, 클래스, 인터페이스
▶ 문자열 (String)
- 문자열을 담기위한 자료형
- 문자열 데이터를 저장할 때 큰 따옴표(")로 감싼다.
Stack 영역과 Heap 영역
A a = new A();
Stack 영역
- 기본 자료형 등 해당하는 지역변수의 값이 저장되는 공간(A a )
- Heap 영역에 생성된 object 타입의 데이터 참조값이 할당되는 공간
- 정적메모리
- 프로그램을 실행하는 최소한의 메모리
참조값이란?
객체의 메모리를 생성했을 때 메모리와 연결된 유일한 숫자값(주소값)
Heap 영역
- 객체와 배열이 생성되는 영역(new A())
- 참조하는 변수나 필드가 없다면 의미없는 객체로 이를 쓰레기 값으로 취급한다.
- JVM은 가비지 컬렉터를 실행시켜 자동으로 제거한다.
- 동적메모리 할당(빌려쓰기)