tuter77

자료구조/알고리즘 자바의 데이터 표현. 본문

Algorism TIL

자료구조/알고리즘 자바의 데이터 표현.

tuter77 2023. 2. 10. 15:04

java에서 자료를 활용하는 형태들

 

Primitive type(기본형) : byte, short, int, long, float, double, char, boolean

Rapper Class type : 위 기본형 자료구조를 Reference 형으로 표현할 수 있도록 해주는 형태(ex. Byte, Integer 등.)

Reference type : 기본형을 제외한 나머지 자료구조(ex. String) // Object type이라고 부르기도 한다.

 

위 타입들은 컴퓨터 메모리에서 존재하는 방식이 다르다.

 

기본형은 call by value로 메모리에 존재하며, 

void main(){
	int v = 42;
    System.out.println(v); //42
    method(v);
    System.out.println(v); //42
}

void method(int v){
	v=v*2;
}

 위의 예시에서 보면 v가 가리키는 메모리는 기존에 저장되어있는 42라는 값자체이다.

때문에 method에서 v값을 두배로 해줘도 method가 끝나면 똑같이 42가 출력된다. (즉, method에 매개변수로 전달된 v는 42라는 값뿐이기때문에 42라는 값이 메모리에서 사라진 후 84로 변경되어 저장되지 않는 것을 알 수 있다.)

 

 

반면, 참조형예시로 보면 call by reference로 메모리에 존재하는데

void main(){
	Data v = new Data();
    v.d = 42; //v안의 d를 가리킴.
    System.out.println(v); //42
    method(v);
    System.out.println(v); //84
}

void method(Data v){
	v.d = v.d*2;
}

class Data{
	int d;
}

v가 주소를 통해 메모리를 가리키고 있기때문에 같은 v를 가리킨다.

heap 메모리에 저장된 v라는 참조형은 주소를 통해 저장된 데이터가 변할 수 있으므로, method내에서 변경된 d값이 적용되는 것을 볼 수 있다. 

 

 

'Algorism TIL' 카테고리의 다른 글

자료구조/알고리즘 시간복잡도  (1) 2023.02.10
2023.01.01 알고리즘 현재까지 한것.  (0) 2023.01.01
2022.12.23 프로그래머스  (0) 2022.12.23
22.12.21 TIL(백준 입출력)  (0) 2022.12.21