ホームページ  >  記事  >  バックエンド開発  >  Go言語とJava言語の違いは何ですか?

Go言語とJava言語の違いは何ですか?

青灯夜游
青灯夜游オリジナル
2020-12-08 14:00:4518807ブラウズ

違い: 1. Go では関数のオーバーロードが許可されていないため、メソッドと関数に一意の名前を付ける必要がありますが、Java では関数のオーバーロードが許可されています。 2. Java ではデフォルトでポリモーフィズムが許可されていますが、Go では許可されていません。 3. Go コードは複数のコアに自動的にスケーリングできますが、Java は常に十分にスケーラブルであるとは限りません。 4. Java は多重継承をサポートしていませんが、Go は多重継承をサポートしています。

Go言語とJava言語の違いは何ですか?

#この記事の動作環境: Windows10 システム、Go 1.11.2、thinkpad t480 コンピューター。

関連する推奨事項: 「

Go ビデオ チュートリアル

Go 言語とは何ですか?

Go は、Golang とも呼ばれるプログラミング言語です。オープンソース プログラミング言語である Go を使用すると、信頼性が高く、シンプルで効率的なソフトウェアを簡単に構築できます。

Go は、型付き静的にコンパイルされた言語です。 Go 言語は、ガベージ コレクション、CSP スタイルの同時実行性、メモリ安全性、および構造的型付けを提供します。

Java とは何ですか?

Java は、クラスベース、同時実行、オブジェクト指向の汎用コンピューター プログラミング言語です。 Java は、実装の依存関係がほとんど含まれないように特別に設計されています。 Java アプリケーションは JVM (Java 仮想マシン) 上で実行されます。これは、今日最も有名でよく知られているプログラミング言語の 1 つです。

Java は、複数のプラットフォーム用のソフトウェアを開発するために使用されるプログラミング言語です。 Java アプリケーション上のコンパイルされたコードまたはバイトコードは、Linux、Mac OS、Linux などのほとんどのオペレーティング システムで実行できます。 Java の構文の多くは C および C 言語から派生しています。

Go 言語と Java の違い

1. 関数のオーバーロード

Go では関数のオーバーロードは許可されていないため、独自のメソッドと関数が必要です名前。 Java では関数のオーバーロードが可能です。

2. 速度

go は java より高速です

3. ポリモーフィズム

Java はデフォルトでポリモーフィズムを許可します。しかし、Go はそうではありません。

Java のポリモーフィック実装は原則に従います。スーパークラス オブジェクト参照変数がサブクラス オブジェクトを参照する場合、参照変数の型ではなく、参照されるオブジェクトの型によって、どのメンバー メソッドが呼び出されるかが決まります。呼び出されるメソッドはスーパークラスで定義されている必要があります。つまり、サブクラスによってオーバーライドされるメソッドです。 Java のポリモーフィズムは、継承ベースとインターフェイスベースの 2 つの方法で実現できます。

Go 言語は通常、さまざまなタイプの代入を許可しません。つまり、従来のポリモーフィズムをサポートしません。インターフェイスは例外であり、さまざまな型を割り当てることができます。型がインターフェイスを実装している限り、その型の変数をインターフェイスの変数に割り当てることができます。

4. ルーティング設定

Go 言語はルーティング設定に HTTP プロトコルを使用しますが、Java はルーティング設定に Akka.routing.ConsistentHashingRouter と Akka.routing.ScatterGatherFirstCompletedRouter を使用します。

5. スケーラビリティ

Go コードは複数のコアに自動的にスケーリングできますが、Java は常に十分なスケーラビリティを備えているわけではありません。

6. 型システム:

JAVA には 2 つの完全に独立した型システムがあり、1 つは値の型システム、byte、int、boolean、char、double、もう 1 つは object です。 root、Integer、HashMap 型などの型システム。値型システムでオブジェクト型参照を使用する場合は、ボックス化する必要があります。 Go 言語のほとんどの型には値セマンティクスがあり、配列や構造体などの複合型も含まれており、これらの型はメソッドを持つことができます。任意の型に新しいメソッドを追加できます。同時に、Go 言語は、var b=&a

7 など、& を介してオブジェクトへの参照を取得できます。オブジェクトの受け渡し: Java の

オブジェクト メソッドには、隠された this ポインタがあります。 Go 言語のオブジェクト指向は別の文法形式で表現されるだけで、このポインタは隠されていません。つまり、メソッドによって強制されるターゲットは明示的に渡され、隠蔽されません。また、メソッドが適用するターゲットは必ずしもポインタである必要はありません(Java はオブジェクトへのポインタを渡します)、ポインタの場合は this という名前を付ける必要はありません。

8. 初期化:

Java にはデフォルトのコンストラクタやユーザー定義のコンストラクタがありますが、Go では必要ありませんが、通常の関数をカスタマイズすることができます。

9. メンバーのアクセシビリティ:

Java では、private、protected、public、package などのキーワードがアクセス制御に使用されます。他のパッケージからシンボルにアクセスできるようにするには、大文字で始まるシンボルを定義する必要があります。小文字で始まるシンボルは、パッケージ内でのみアクセスできます。

10. 継承:

Java の継承は extends キーワードによって完了し、多重継承はサポートしません。 Go 言語の継承は匿名構成によって完了します。基底クラスは Struct の形式で定義され、サブクラスは基底クラスをサブクラスの定義のメンバーとして置くだけでよく、メモリ レイアウトは調整によって変更できます。基本クラスのメンバーの位置、多重継承をサポートします。

11. インターフェイス:

Java のインターフェイスは、さまざまなコンポーネントのコントラクトとして存在し、必須です。クラスは、インターフェイスを実装し、インターフェイスから継承する必要があることを宣言する必要があります。名前が異なるだけで同一のインターフェースが 2 つある場合でも、そのクラスがそのインターフェースを実装しているかどうかは、クラスが宣言した実装インターフェースにそのインターフェースが含まれているかどうかによってのみ判断でき、これを「侵入型」インターフェースと呼びます。

GO 言語は非侵入的なインターフェイスを使用します。クラスはインターフェイスに必要なすべての関数を実装するだけでよく、その場合、クラスがインターフェイスを実装すると言います。 GO 言語は、インターフェイスを介してインターフェイス クエリ (インターフェイスが指すオブジェクトが別のインターフェイスを実装しているかどうか)、型クエリなどを実行できます。

プログラミング関連の知識について詳しくは、プログラミング コースをご覧ください。 !

以上がGo言語とJava言語の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。