は、私はあなたが「基準サイズ」ポイントで探しているかわからないんだけど、ここで私はいくつかの確信を持って答えることができるいくつかある:プリミティブ型が異なる
場合、結果の型は常にあります少なくとも2つのタイプの中で最も広い。
は正しくありません。 intを指定してlongを渡すと、intにダウンキャストする必要があり、渡されるのはintです。バイトを渡すと、自動的にintにアップキャストされます。常にintを渡します。
オブジェクトのサイズは、関数ポインタのテーブルといくつかの他のものもあり、それは
が含まれているすべてのプリミティブと参照型のサイズの和である、私はそれが、この単純明快だとは思いません。
静的変数は、オブジェクトに含まれていない
私は、彼らがオブジェクトインスタンスに含まれていないと言うだろうが、私がいたそのポインタテーブル内のオブジェクトのインスタンスでそれらへのポインタ(があるかもしれません私はそうは思わない。
「NULL」(空の参照?)
あなたはそれがはるかにCのように動作しますnullを渡すとが、(私は「ヌル」を意味0またはいくつかの他の定義済みの悪い場所へのポインタを信じて)あなたはヌルにそれを比較するか、またはNPEを得ることを除いて、これにアクセスする必要はありません。あなたはCのように他の方法でそれを扱うことができません。
オブジェクトタイプは異なります(どうして見つけられますか?)
オブジェクトにはメタデータが格納されていますが、それはどのタイプであるかを伝えますが、もっと重要なことに、ポインタテーブルがあるため、呼び出す「正しい」メソッドは常にポインタの逆参照です。あなたが実際に持っているクラスを見つけ出し、 "Extends"ツリーをスキャンして、与えられたメソッドの最初の実装を見つける必要があります。代わりに、クラスがキャストされているかどうかにかかわらず、正しい "toString"あなたは使うべきです。
匿名クラス
これらは親のクラス名に基づいて、魔法の名前を与えられ、いくつかの特別な例外を除いて通常のクラスとしてコンパイルされています。
少し夜間の読書資料です:http://java.sun.com/docs/books/jvms/これは上記の – ChssPly76
Tyのすべてに答える必要があり、非常にいいリンクでした。 – Margus