[C++Basic]C++とJavaの主な違い

2059 ワード

1.コンパイル運転
JAvaは解釈言語で、javaプログラムは実行時にクラスローダがクラスパスから関連するクラスをロードし、java仮想マシンがそのクラスファイルのバイトを読み取り、対応する操作を実行する.C++コンパイル時にプログラムをローカルマシンコードにコンパイルする.一般的にjavaプログラムの実行速度はC++より10-30倍遅い.just-in-time compilingを採用しても(クラスファイルのバイトを読み取る、ローカルマシンコードにコンパイル)技術も、C++よりずっと遅い.
2.メモリ管理
JAvaのゴミ自動回収メカニズムはC++プログラマーによるメモリ管理よりも効率が低い.
3.文法の違い:
  • データ型
  • JAvaの元のデータ型はオペレーティングシステムプラットフォームごとに同じ長さですが、C++のデータ型の長さはオペレーティングシステムによって異なるため、javaが異なるオペレーティングシステム上で実行する際に変換プロセスがあります.cおよびc++では、データ型の暗黙的な変換が発生することがあります.これは、自動強制型変換の問題に関連します.たとえば、c++で浮動小数点値を割り当てることができます.Javaでは、c++の自動強制タイプ変換はサポートされていません.必要に応じて、プログラムによって明示的に強制タイプ変換を行う必要があります.
  • ポインタ廃棄
  • JAVA言語はプログラミング者にポインタを見つけられずにメモリ無ポインタに直接アクセスさせ、自動メモリ管理機能を追加させ、c/c++言語におけるポインタ操作ミス、例えば野ポインタによるシステムクラッシュを効果的に防止した.しかし、JAVAにポインタがないというわけではなく、ダミー内部ではポインタが使用されているが、外部の人は使用できないだけである.これはJavaプログラムの安全です.
  • オペレータ
  • Javaではオペレータのリロードはサポートされていません.オペレータのリロードはc++の際立った特徴とされています.
  • 関数呼び出し
  • Javaには関数がなく、c++よりも純粋なオブジェクト向け言語として、Javaは開発者にすべてのルーチンをクラスに含めるように強要した.同時にjavaのすべてのオブジェクトはスタックに作成され、stackにはオブジェクトが作成されず、C++の関数エントリアドレス、局所変数、一時オブジェクトはstackに作成された.
  • 類運用
  • Javaは多重継承をサポートしていないが、一つのクラスが複数のインタフェース(extends+implement)を継承することを許可し、c++多重継承の機能を実現し、またc++における多重継承の実現方式による多くの不便を回避した.Javaではオブジェクトは値ではなく、すべてのオブジェクトが参照によってアクセスする.「.」オペレータは、オブジェクトの参照を左の操作パラメータとしてオブジェクトにアクセスするメンバーです.C++では、この方法と同等です.Javaはまたc/c++の中の構造と連合を取り消しました.C++の方法はかそうかんすうと宣言することができて、虚関数は運行期間がオブジェクトのタイプによってやっと確定したのです.C++の方法はデフォルトでは虚ではありません.Javaの中で、方法はデフォルトでは虚ですが、finalの関鍵字を使って虚ではありませんと宣言することができます.
    参考:ウィキペディアhttp://zh.wikipedia.org/wiki/%E6%AF%94%E8%BE%83Java%E5%92%8CC%2B%2B