>>21
b = a;

これは、オブジェクト同士の代入だろ?
こんなコーディングをするとは、君は素人だろ?

どの言語でも普通は、toString, hashCode, equals の3種の神器とか、
private copy constructor とかを、真っ先に考える

たいてい各言語の「Effective 何々」と言う本に書いてある

君のレベルで、C++が分かるには、数年以上かかる。
何十年も、Cをやってる老害が、オブジェクト指向で皆爆死してる

まずこの本を3回読んで、オブジェクト指向を学ぶ
「スッキリわかる Java入門 第2版、2014」

オブジェクト同士の代入(参照の代入)の意味を考えること。
primitive 同士の代入(値の代入)とは、根本的に違う