[Java] Primitive type vs Reference type


Primitive type vs Reference type



Primitive type


Javaでは、タイプを2つのクラスに分けることができます.このうち、8種類(int、char、boolean、byte、long、short、float、double)が属する元のタイプのみが直接値を格納します.
nullはstack領域に格納され、参照型ではないため追加できません.nullを入れたいならwrapper classにします

Reference type


Javaで上記の8つの基本タイプを除くすべてのタイプ(カスタムクラス、配列、interfeace...)このreference typeに属します.実際の値はheap領域に格納され、そのアドレスはスタック領域の変数に格納されます.すなわち,変数自体は値ではなくアドレスを格納する.
したがって、==演算(変数の値を比較する)を行う場合は、同じ値がtrueではないためequals()を使用する必要があります.

int num = 3;  // primitive type 
List<Integer> arr = new ArrayList<>(Arrays.asList(2,3,4)); // reference type