Primitive 타입은 int, long, boolean, double, shot, char, byte 같은 원시타입(기본타입)을 말합니다.
boolean은 false, 나머지는 0으로 초기화 된다.
null을 사용 할 수 없다.
변수에 값(value)를 저장.
매개변수로 사용 할 때 복사된 데이터를 전달하여서 원본 데이터는 영향을 받지 않음.(Pass By Value)
스택 메모리에 값이 존재.
속도가 빠르다.
Primitive 타입인 중 하나인 int 형의 변수 num은 sum()메소드에서 +1을 해줬지만 11번 라인을 보면 1을 그대로 찍어준다.
Primitive 타입은 변수 안의 값이 복사된 값을 넘겨 주기 때문에 원본 데이터에는 영향을 주지 않는다.
Reference 타입은 Integer, Long 등 Object를 상속 받은 클래스들을 말하며 참조유형이라고 한다.
null을 사용 할 수 있다.
null로 초기화 되어 있다.
변수에 값(value)이 아닌 값이 저장된 주소를 저장.
매개변수로 사용 할 땐 값이 저장된 주소를 전달하여 값을 수정하면 원본 값이 바뀐다.(Pass By Reference)
힙 메모리에 값이 존재하며, 스택 메모리에 값이 저장된 주소 값을 참조됨.
값을 필요할 때마다 언박싱의 과정을 거쳐야해서 원시타입 보다 속도가 느림.
[1,2]의 값을 가진 배열 arr를 sum() 메소드를 사용하여 첫 번재 인수를 +1 했더니 원본 값이 [0,2]의 배열로 바뀐게 보인다.
Reference 타입은 매개변수로 전달할 때 저장된 주소를 전달 한다.
때문에 sum() 메소드의 매개변수 arr는 전달 받은 주소를 바라보고 있어 데이터를 수정 하면 같은 주소를 바라보고 있는 원본 데이터도 바뀌는 것 이다.
한 줄평 : Pass By Value, Pass By Reference는 반드시 구분 할 줄 알아한다.
잘봤습니다.