Java - C++と相違する点

■ポインタが無い。
Javaにはポインタが無いと良く言われます。が、これは誤りでポインタのようなものはあります。
関数(メソッド)に値を渡す時は、通常「値渡し」で渡されます。この場合、呼び出された関数(メソッド)で値を変更しても、元の関数ではまったく変更ありません。
しかし、関数(メソッド)に配列及びオブジェクトを渡すと、「参照渡し」で渡されます。プログラマがポインタ変数みたいに明示的に指定するのではなく、Javaの仕様です。つまり、配列及びオブジェクトはポインタ値が渡されるのです。
■構造体が無い
Javaには構造体(共用体)がありません。ではレコード単位なデータ構造はどう実装するのかと言うと、クラスで定義します。3レコード存在する時は3オブジェクトが存在するように実装します。
■デストラクタが無い
クラスのデストラクタがありません。Javaではデストラクタではなくファイナライザと呼ばれ、関数名は、finalize() という決まった名前になります。このオブジェクトへの参照はもうないとガベージコレクションによって判断されたときに、ガベージコレクタによって呼び出されます。
つまり、いつ呼び出されるかわからないという欠点があります。
■goto文が無い
goto文は予約語となっているだけで、javaにはgoto文がありません。