Java 데이터 타입

sa46lll·2022년 5월 29일
0

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

  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개의 댓글