値型と参照型のメモ

色々忘れていたので復習。

Java サイトから参照。メモリの使い方は他言語でも大体同じだと思うので。違うかも。

ex )

    int i = 4
    int j = i;
    i = 5;
    // j の数値は、4 となる。

仮に参照型の場合、 j は 5 となる。
int は値型。

 

コピーとメモリ領域

コピーには 2 種類あり、
深いコピー実体がコピーされ、
浅いコピー参照がコピーされる。( 指し示す矢印がコピー )

代入演算子で行うコピーにおいて、
値型深いコピーとなり、参照型浅いコピーとなる。
cv;;Mat は参照型。深いコピーしたいならば clone() を使う。

http://www.itsenka.com/contents/development/java/class2.html から拝借。

f:id:koshinRan:20180416211537p:plain

値型スタック領域に確保され、参照型ヒープ領域に確保される。
参照型でも変数スタック領域だが、インスタンスはヒープ領域。
深いコピースタック ( 参照型の場合なら ) ヒープのコピー。
浅いコピースタックのみのコピーで実体は一つ。

 

 

こちらから。
http://www.itsenka.com/contents/development/java/class2.html

以上。

値型とプリミティブ型って違う ?
言語によって T 型を含めたり含めなかったりする模様。
https://qiita.com/irxground/items/98e74836fdbb40a7aaad