JavaのすべてのクラスはObjectのサブクラスであり、javaの変数はオブジェクト自体ではなくオブジェクト参照であるため、Object型を暗黙的に指定できる場合、javaは型指定を強制的に行うのはなぜですか?必要なのは、単純なデータ型を使用するときだけです。javaにタイプ識別子が必要なのはなぜですか?
答えて
変数がObject
の場合、コンパイラはその変数を他の型として使用することはできません(キャストしない限り)。
これは型安全と呼ばれます。例えば
:
Object str = "abc";
s.toUpppercase(); //Compiler error
Javaは強く型付けされた言語です。型は、コンパイル時にコードをコンパイルし、型の互換性を検証できるようにするために必要です。
弱い型指定言語には型がありません。たとえば、JavaScriptでvar x
と言うときは、単に変数を定義します。次に、任意の型の値をそこに割り当てることができます。つまり、コードにバグがあり、この変数にstringを割り当ててからこの変数を2で割った場合(y = x/2
)、実行時にスクリプトが失敗するだけです。 Javaでは、このようなコードをコンパイルすることはできません。
開発中のバグはx、QAではx * 10、生産にはx * 100という原則があります。コンパイラと強く型付けされた言語は、QAに到着する(愚かな)バグの数を減らすことができるため、ソフトウェア開発をより簡単に、迅速に、安価にすることができます。
私は '静的'と '動的な'入力を使います。 '強い'と '弱い'は明確に定義されておらず、いくつかの動的な型付けされた言語はしばしば強く型付けされたものと呼ばれます。さらに、動的に型指定された言語でも型があります。例えば、javascriptの* values *は文字列、オブジェクト、数値などです。 – CodesInChaos
Pythonがそのような変数をどのように実装しているのですか(強く型付けされているとは言えますが)。 – Likhit
Pythonは動的に型指定され、javaは静的に型付けされます。コンパイル時の型チェックを静的な型定義の方が好む人もいれば、動的な型定義の柔軟性を好む人もいます。 – CodesInChaos
おそらくJavaは、大規模なプロジェクトで使用され、合理的な会社によって作成されたオブジェクト指向言語です。このような強力なタイピングによって潜在的なバグの量が減少し、コンパイルレベルで削除できるようになります。
btw。 .NET製品では、var x
のようなものがあります。しかし、メソッド本体ではローカルでしか使用できません。しかし、これは開発者のためのコンパイラの砂糖です。したがって、Javaは強力な型付き言語の一例に過ぎません。
Javaはこれを実行します。これは言語がどのように定義されたかである。 これは、言語が設計されたとき(約20年前)、またコンパイラの開発が容易であることから、優れた実務とみなされていました。
Scalaは、ほとんどの場合、明示的な型識別子を必要としない、Javaと密接に関連する言語です(同じJVM上で動作します)。 欠点は、スカラーコンパイラが(この理由のために)非常に遅いことです。
- 1. Java:識別子が必要です
- 2. 識別子が必要な理由
- 3. c#識別子が必要ですか?
- 4. コンパイルエラー:識別子が必要です
- 5. 識別子が必要です。
- 6. 識別子が必要です
- 7. Javaバイナリ検索<識別子が必要です>
- 8. 変数からのJSのデフォルト引数値:なぜ識別子が異なる必要がありますか?
- 9. 「識別子が必要です」と「タイプが正しくありません」
- 10. JavaでPropertiesクラスが必要なのはなぜですか?
- 11. JavaでString [] argsが必要なのはなぜですか?
- 12. 識別子が識別子ではない場合、識別子は見つかりませんでしたか?
- 13. オブジェクト認識の問題にホモグラフィが必要なのはなぜですか?
- 14. なぜデリゲート宣言には識別子を記述する必要がありますか?
- 15. Neteezaの識別子が必要ですか?
- 16. Matタイプをポインタにする必要がないのはなぜですか?
- 17. C#myclass。[(col.ColumnName)] =行[(col.ColumnName)]識別子が必要ですか?
- 18. なぜHaskellのこのタイプの注釈が必要ですか?
- 19. XenがタイプIのハイパーバイザーですが、なぜOSが必要なのですか?
- 20. なぜ粗量子化器が必要なのですか?
- 21. lanczos(0)に特別なケースが必要なのはなぜですか?
- 22. \ u65549は有効なJava識別子ですか?
- 23. インストール時にデータベースに別のユーザーアカウントが必要なのはなぜですか?
- 24. C++に演算子の同義語が必要なのはなぜですか?
- 25. なぜ私はMySQLのコネクタJavaが必要ですか?
- 26. Asp.Net Javascriptのコンパイルエラー:「識別子が必要です」
- 27. C#アプリケーションのコンプリケーション:エラー:識別子が必要です
- 28. GoogleApiClient識別子が必要です。Androidスタジオのエラー
- 29. なぜ識別子は数字で始まらないのですか?
- 30. なぜPDFファイルにLOG4JとSLF4Jが必要ですか?なぜ.Docファイルには必要ないのですか?
私はあなたが何を意味するか分かりません。 「型指定」が不要であると思われるコードのスニペットを投稿できますか? – Mat
明確にするには:変数をデフォルトの 'Object'にして、型推論ではないようにしますか?なぜこれが望ましいのでしょうか?あなたは 'オブジェクト'で多くの有用なことをすることはできません。または、javaが静的に型付けされていない理由を知りたいですか? – CodesInChaos
あなたは何を意味するか説明するためにいくつかの(偽の)コードを教えてください。オブジェクトの型がわからない場合は、オブジェクトのメソッドをどのように使用できますか? –