JAVAとC++の違いを詳しく紹介します


JAVAもC++も対象言語です.すなわち,それらはいずれも対象思想(パッケージ,継乗,多態)に向かうことができる.c++は大量のC言語使用者の世話をするためにCと互換性があるため、自身がクラス付きのC言語になっただけで、その対象への徹底性に多少影響を及ぼしている.
JAVAは完全な対象言語であり、文法がより明確で、規模がより小さく、学びやすい.それは多種のプログラム設計言語を深く細かく研究した上で、他の言語の不足点を捨てて、根本的にc++の固有の欠陥を解決した.
Javaとc++の類似点は異なる点より多いが、2つの言語のいくつかの主な違いはJavaを学習しやすくし、プログラミング環境をより簡単にする.
ここでは違いを完全にリストすることはできません.顕著な違いだけをリストします.
1.ポインタ
JAVA言語では、プログラミング者がポインタを見つけることができず、メモリ無ポインタに直接アクセスできず、自動メモリ管理機能が追加され、c/c++言語でのポインタ操作ミス、例えば野ポインタによるシステムクラッシュを効果的に防止します.しかし、JAVAにはポインタがないわけではありません.仮想マシンの内部ではポインタが使われていますが、外部の人は使用できません.これはJavaプログラムのセキュリティに役立ちます.
2.多重継承
c++は多重継承をサポートし、これはc++の特徴であり、多親クラスがクラスを派生させることを可能にする.多重継承機能は強いが、複雑な使用で多くのトラブルを引き起こし、コンパイラが実現するのも容易ではない.Javaは多重継承をサポートしていないが、1つのクラスが複数のインタフェース(extends+implement)を継承することを許可し、c++多重継承の機能を実現し、c++における多重継承の実現方式による多くの不便を回避した.
3.データ型とクラス
Javaは完全にオブジェクト向けの言語であり、すべての関数と変数部がクラスの一部である必要があります.基本データ型を除いて、残りはクラスオブジェクトとして配列を含む.オブジェクトはデータと方法を結合し、クラスにカプセル化し、各オブジェクトが独自の特徴と動作を実現することができます.c++では、関数と変数をグローバルに定義できます.また、Javaではc/c++の構造と連合が廃止され、不要なトラブルが解消されました.
4.自動メモリ管理
Javaプログラムのすべてのオブジェクトは、c++のnewオペレータに似たnewオペレータでメモリスタックに構築されます.次の文は、クラスReadが作成されたオブジェクトから、そのオブジェクトのworkメソッドを呼び出します.
 

  
  
  
  
  1. Read r=new Read();
  2. r.work();

 
文Read r=new Read()Readのインスタンスをスタック構造上に作成した.Javaは不要なメモリ回収操作を自動的に行い,プログラマによる削除は不要である.c 10では、プログラムベイによってメモリリソースを解放し、プログラム設計者の負の投げ込みを増加させなければならない.Javaでは、オブジェクトが再利用されない場合、不要なメモリ回収器に削除を示すラベルが付けられます.JAVAでは不要メモリ回収プログラムはスレッド方式でバックグラウンドで実行され,空き時間を利用して動作する.
5.オペレータリロード
Javaではオペレータの再ロードはサポートされていません.オペレータリロードはc十十十の際立った特徴と考えられ,Javaではクラスがほぼこのような機能を実現できるが,オペレータリロードの利便性は依然として失われている.Java言語でオペレータリロードがサポートされていないのは、Java言語をできるだけ簡単に維持するためです.
6.前処理機能
Javaではプリプロセッシング機能はサポートされていません.c/c十十十は、コンパイル中にプリコーディング段階、すなわち周知のプリプロセッサを有する.プリプロセッサは開発者に便利ですが、丁コンパイルの複雑さを増します.JAVA仮想マシンにはプリプロセッサはありませんが、c 1010プリプロセッサと同様の機能を提供する導入文(import)があります.
7.Javaはデフォルトの関数パラメータをサポートしないが、c十十十はサポートする
cでは、コードが関数に整理され、関数はプログラムのグローバル変数にアクセスできます.c 10はクラスを追加し、クラスに接続された関数であるクラスアルゴリズムを提供し、c 10クラスの方法はJavaクラスの方法と非常に似ているが、c 10は依然としてcをサポートしているため、c 10の開発者が関数を使用することを阻止することができず、結果として関数と方法が混在してプログラムが混乱している.
Javaには関数がなく、c十十よりも純粋なオブジェクト向け言語として、Javaは開発者にすべてのルーチンをクラスに含めるように強要し、実際には、方法でルーチンを実現することで、開発者がよりよくコードを組織することを奨励することができる.
8文字列
cとcの10は文字列変数をサポートしておらず、cとcの10プログラムではNull終端子を使用して文字列の終了を表し、Javaでは文字列はクラスオブジェクト(strinRとstringBuffer)で実現され、これらのクラスオブジェクトはJava言語の核心であり、クラスオブジェクトで文字列を実現するには以下のいくつかの利点がある.
(1)システム全体で文字列を確立し、文字列要素にアクセスする方法は一致する.
(2)J 3陽文字列クラスはJava言語の一部として定義され、追加の延長部分としてではない.
(3)Java文字列は実行時にチェックを行い、実行時に発生したエラーを排除するのに役立つ.
(4)文字列を「十」で接続できます.
9 goto文
「恐ろしい」goto文はcとc++の「遺物」であり、この言語技術上の合法的な部分であり、goto文を引用することはプログラム構造の混乱を引き起こし、理解しにくく、goto文は無条件移行サブプログラムと多構造分岐技術に用いられる.広い理由からJavaではgoto文は提供されず、gotoをキーワードとして指定しているが、その使用はサポートされず、プログラムを簡潔に読みやすくしている.
l 0.型変換
cおよびc 10では、データ型の暗黙的な変換が発生することがあり、これは自動強制型変換の問題に関連する.例えば、c 10では、浮動小数点値を整数変数に付与し、その末尾数を除去することができる.Javaはc 10の自動強制タイプ変換をサポートしていません.必要に応じて、プログラムによって明示的に強制タイプ変換を行う必要があります.
11.異常
JAVAの異常メカニズムは例外イベントをキャプチャし、システムのフォールトトレランス能力を強化するために使用される.
 

  
  
  
  
  1. try{//
  2. }catch(exceptionType name){
  3. //
  4. }

 
ここでexceptionTypeは例外タイプを表します.C++にはこのような便利なメカニズムはありません.
51 CTO開発チャンネルから