Java 데이터 타입

sa46lll·2022년 5월 29일

자바는 크게 두개의 데이터 타입을 사용한다.

  1. Primitive 데이터 타입 (기본형)
    short, int, long, char, boolean, float, double
    값을 변수에 대입하여 사용하는 형태
void main() {
	int v = 42;
    System.out.println(v);	// 42
    method(v);
    System.out.println(v);	// 42
}
void method(int v) {
	v = v * 2;
}
  1. Reference 데이터 타입 (참조형)
    클래스, 인터페이스, 배열, 열거형
    값을 변수에 대입하지만 변수는 값을 직접 들고 있지 않고, 값이 들어있는 레퍼런스 주소를 담고 있다.
    ex) string, Integer, Char
void main() {
	Data v = new Data();	// v는 레퍼런스 타입
    v.d = 42;
    System.out.println(v.d);	// 42
    method(v);
    System.out.println(v.d);	// 84
}
void method(Data v) {
	v.d = v.d * 2;
}
class Data {
	int d;
}

내가 만든 메소드가 Call by value인지, Call by Reference 인지 구분하자. 레퍼런스일때는 원본 데이터가 훼손되지는 않는지 주의하자.

Mutable / Immutable
변경할 수 있는 값을 mutable, 변경할 수 없는 값을 immutable 이라 한다.
final+primitive 값은 변경할 수 없으니 immutable 이라 한다.
하지만 final+reference 의 경우, 변경되지 못하기는 하지만 변경되지 못하는 값은 변수가 담고 있는 참조 주소값이 된다. 즉, 참조 변수가 가리키는 인스턴스를 변경할 수는 없다. 그렇다고 그것이 변수가 가리키는 인스턴스의 내용을 변경할 수 없다는 것을 의미하지는 않는다.

profile
비열한 커비

0개의 댓글