私はEffective Javaから次の行を理解しようとしています
Java を使うのが楽しい理由の 1 つは、Java が安全な言語であることです。これは、ネイティブ メソッドがない場合、C や C++ などの安全でない言語を悩ませるバッファー オーバーラン、配列オーバーラン、ワイルド ポインター、およびその他のメモリ破損エラーの影響を受けないことを意味します。安全な言語では、クラスを記述し、システムの他の部分で何が起こっても、それらの不変条件が真のままであることを確実に知ることができます。
バッファ オーバーラン、配列オーバーランとは何ですか (ここでは詳細は省略します。簡単な概要のみを示します)。また、Java のどの機能によってプログラムがオーバーランの影響を受けなくなりますか?