변수
변수란 데이터를 저장하기 위한 메모리 공간에 이름을 부여한 것이다. 변수에 값을 저장하고 필요할 때마다 값을 꺼내 사용할 수 있다.
자료형 (Data Type)
자료형(Data Type)은 변수에 저장될 데이터의 종류와 크기를 결정하는 역할을 한다. 이 자료형은 크게 기본형 타입과 참조형 타입으로 구분된다.
기본형 타입
int, byte, short, long, float, double, char, boolean
- 기본형 타입은 JVM의 스택 메모리 영역에 값을 저장한다. (로컬 변수일 경우)
- 각 기본형 타입은 고정된 크기를 가진다. (ex. int는 4바이트)
- 초기화 하지 않으면 자료형에 맞는 기본값으로 초기화된다. (null을 가질 수 없다)
- 기본형 숫자타입은 모두 부호가 있는 signed 타입으로 음수와 양수를 모두 표현할 수 있다.
- 가장 왼쪽 비트를 통해 부호를 구분하기 때문에 N bit로 표현할 수 있는 signed 범위는 2^(n-1) ~ 2^(n-1) -1
참조형 타입 (Reference Type)
String, 배열, 인터페이스, 열거, 사용자 정의 클래스 등
- 객체는 힙 메모리에 저장되며, 객체의 주소(참조값)는 스택에 저장한다.
- 참조형 타입의 기본 초기값은 항상 null, 초기화 하지 않으면 NullPointerExcetion 발생
String
: String은 immutable한 성격을 가진다. 즉, String 객체는 한 번 생성되면 그 값을 변경할 수 없다.
String a = "Hello";
System.out.println(a.hashCode());
a = a + " Word";
System.out.println(a.hashCode());
# 출력 값이 다르다
실제 메모리에 "Hello Word"를 따로 만들고 변수 a를 다시 참조하는 식으로 작동한다.
클래스
: 객체를 생성하기 위한 설계도, 객체의 상태(필드)와 행동(메서드)을 정의한다.
class Person {
String name;
int age;
}
Person person = new Person();
배열 (Array)
: 같은 자료형의 요소들이 순차적으로 저장되는 연속적인 메모리 공간, 고정된 크기(한 번 생성 후 크기 변경 불가능)
int[] numbers = new int[5];
String[] names = {"Jenny", "Alice"}
인터페이스 (Interface)
: 클래스가 반드시 구현해야하는 메서드들의 집합. 인터페이스를 통해 다중 상속처럼 동작하게 할 수 있다.
interface Animal {
void sound();
}
열거형 (Enum)
: 상수를 정의하는 타입
enum Direction {
NORTH, SOUTH, EAST, WEST;
}
참고 자료
'Java' 카테고리의 다른 글
접근제어자 캡슐화, 정보 은닉 (0) | 2024.11.20 |
---|---|
String, Stringbuffer, Stringbuilder 차이 (0) | 2024.11.20 |
String 문자열 String Pool, ==과 equals() 차이점 (0) | 2024.11.15 |
JVM의 동작방식과 구조 (0) | 2024.11.14 |
가비지 컬렉션 (Garbage Collection, GC) (0) | 2024.11.14 |
댓글