データ型byte、shortおよびcharが内部的にintとして扱われることをJVM仕様で読みました。 小さいサイズのメリットがない場合、これらのデータ型を持つ理由は何ですか?データ型byte、charおよびshortが必要な理由
7
A
答えて
8
部分では、C/C++との互換性のためだ、部分的には、メモリを節約するためです - 内部、ショートが短いとしてに格納され、それは整数としてを処理します。 new short[10]
は、メモリの半分を占めています。new int[10]
+2
+1:ほとんどの配列。スタックまたはローカル変数では、 'byte 'は' int'(JVMが望むならば、それを最適化できるフィールド)と同じくらいのスペースを占めます。 –
1
メモリを節約するためのものです。各変数にはメモリ空間があります。スペースのサイズは、使用する変数のタイプによって異なります。
それ以外の場合は、文字列を操作するときにchar型が非常に便利です。実際には、string.charAt(インデックス)を使用して文字列の1文字を持つことができます
1
回答は非常に良いですが、別の可能性がある使用を指摘します。データ型のコンパイル時チェックを行うことができます。たとえば、人の年齢(年)を1バイトとして持つことができます。コンパイル時にintやshortに格納された大きな値がそのフィールドに使用されることを確認することができます。
関連する問題
- 1. def __get__が必要な理由:戻り値の型。型名?
- 2. TextWatcherが必要な理由
- 3. RIAが必要な理由
- 4. "rec"が必要な理由
- 5. int型のcharへのcharがchar型ではなくJavaのInteger型になる理由
- 6. SSE命令:Byte + Short
- 7. WF4制約がActivityおよびCodeActivity親の型と連携しない理由
- 8. byte、short、charを使用しても意味がありません
- 9. random.choiceのリストが必要な理由
- 10. HerokuにResque 1.22.0が必要な理由
- 11. AMQPにmessageIdが必要な理由
- 12. カスタムディレクティブにBindToControllerが必要な理由
- 13. RVMにYAMLが必要な理由
- 14. rvmにログインシェルが必要な理由
- 15. メテオでパッケージインポートが必要な理由
- 16. Google Analytics UTMが必要な理由
- 17. ECUキャリブレーションが必要な理由
- 18. JDBC-ODBCにドライバが必要な理由
- 19. Dockerにユニオンファイルシステムが必要な理由
- 20. 識別子が必要な理由
- 21. refrehアクセストークンのリフレッシュトークンが必要な理由
- 22. mongodb getSisterDBが必要な理由
- 23. ハードリンクとソフトリンクが必要な理由
- 24. WPFでAutomationPropertiesが必要な理由
- 25. I2Cでクロックストレッチが必要な理由
- 26. int、byte、long、およびfloatの追加
- 27. byte、short、charはswitch文で自動的に昇格されますか?
- 28. REST、json、.Net4、および複合データ型
- 29. .NET SOAPおよび複合データ型
- 30. OPENXMLとOPENROWSETおよびxmlデータ型
大部分はアレイ用です。 shortの配列は、同じサイズの整数の配列の半分のメモリを使用します。 – MTilsted
ある積分値が特定のポイントでオーバーフローすることを期待するなど、さまざまな積分タイプの値域に応じて多くのアルゴリズムが存在すると確信しています。 –
メモリの問題とは別に、これらの基本的な数値型は、通信プロトコルやJavaコードの外で定義されたコンパクトな構造とやりとりするコードを処理する場合に便利です。もちろん、言語の設計者が本当にこの使用例を気にしていれば、 'b&0xFF'のようなひどい手口を必要としないように、unsigned型を言語に追加するでしょう... –