본문 바로가기

Java

Object /call by value/reference/

object : 도라애몽 주머니 (class입니다.)

안에 뭐가 올지 모르겠을 때 무슨 타입을 할지... 모호할 때 object로 받아요.

무슨 타입인 지 알게되면 캐스팅해요.

 

기본자료형(배열 포함)은 call by value.

 

그외에 class 자료형, object, String, char[]등등(기본자료형이 아닌)은 call by reference.

String을 선언만 하면 얼마나 메모리를 확보해놔야 할지 몰라서 4byte 메모리자리 생김. 왜냐면 주소레퍼런스(pointer)를 적을 건데 정수 타입int(4byte)로 레퍼런스이니까

 

정리 8가지 자료형 (데이터를 저장하는 공간) 

   Call by Value => 쓰면 값이 튀어나옴.

   - int(정수형) : 4Byte(42억 9천/ 경우의 수 21억~) 

      int a;             int a = 10;

      변수선언        변수초기화

   - long(정수형) : 8Byte(경)

   - byte(정수형) : 1byte

   - double(실수형) : 8byte(경우의 수 42억9천, 소숫점 포함)

   - char(문자형) : 2Byte

   Call by reference(첫철자 대문자) => 포인터(주소를 가르킴)로 데이터의 위치를 안내.

   - 클래스 자료형(복합) : new를 이용해 heap에 띄워 사용.

   - char[](문자형,배열) : 고정

   - String(문자형,배열) : 4Byte. 가변 

     크기를 알 수 없기 때문에 int으로 위치를 확보하여 포인터둠.   

     · Object : Type 구분 없음(매직박스) / but, 어떤 Type인지 알 수 없음 -> 코드가 모호해짐. -> 사용X