Javaにおける比較演算子の勘違い

この前、後輩がやたら変な思い込みをしていたのが気になったのでメモ。

「Javaのクラスは全部参照型だから、==じゃアドレス比較になるんです」

public class Equal
{
	public static void main(String args[])
	{
		int[][] a = new int[1][1];
		a[0][0] = 5;
		
		//↓ここでは、アドレス比較がされ
		if(a[0][0] == 5)
		{
			//ここにたどり着かないと言い張るのだ
		}
	}
}

そもそもの間違い

そもそも、int型は値型だし。これができなかったら、演算子オーバーロードもないJavaではどれだけ不便なんだと。

その課題が、2次元配列を利用する物だった。2次元配列の特性上、そういう勘違いをしたのかな。それとも、根本的に何かを理解し間違ってるのかな。結局、聞けずじまいだった。

私がまるでJavaを何も知らないみたいな口調で攻め立ててくるから、少しムッとしたのは事実。私が子供でした。

int型2次元配列のメモリイメージ

int型2次元配列のメモリイメージ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください