個人的な研究のために、指摘して補足することを歓迎する誤りや欠陥があります.
目次
基本データ型とカプセル化クラスの違い: (例として int と Integer を使用)
序文
Javaの基本データ型は、(整数型)byte、short、int、long、(浮動小数点型)float、double、(文字型)char、(ブール型)booleanの8種類です。
対応するカプセル化タイプは、Byte、Short、Integer、Long、Float、Double、Character、Boolean です。
さらに、基本的なデータ型はありませんが、一般的に使用される別のカプセル化クラスがあります: String.
基本データ型とカプセル化クラスの違い: (例として int と Integer を使用)
使用すると、作成方法が異なることがわかります: int 型は変数名を直接割り当てて値を割り当てることができますが、Integer はオブジェクトを作成してから、このオブジェクトのパラメーターを渡す必要があります。しかし、最終的な出力は同じです。
しかし、IDE は警告を報告し、ここでの Integer は不要なボックス化で非推奨であり、int 型に変更することをお勧めします
私はまだそこまで深いレベルを学んでいないので、簡単に見てみましょう。簡単に言えば、ボックス化は基本データ型をラッパー型に自動的に変換することであり、アンボックス化はラッパー型を基本データ型に自動的に変換することです。
Integer num = new Integer(1); //Java5之前 Integer num = 1; //Java5之后 //以上定义方式为装箱 int num2 = num; //拆箱
この観点からすると、数値的には、この 2 つは同じです。プリミティブ データ型でさえ、その値を参照するためだけに提案されています。
この 2 つの違いは、Integer は多くのメソッドとプロパティをカプセル化するクラスであり、これらのメソッドとプロパティを使用してデータを処理できるのに対し、int データ型はできないことです。もう1つの違いは、両者のデフォルト値が異なることで、int型のデフォルト値は0、Integerの場合はカプセル化クラスがオブジェクトを生成するため、そのデフォルト値はnullとなっています。
そして、Integer オブジェクトが対応するメソッドを呼び出すと、それは単純な値ではなくなり、代入も別の型に変換されます。
ラッパー クラスを使用する理由:
- 使用の必要があります
Java はオブジェクト指向言語です. 私たちは常にオブジェクトを作成し、常にオブジェクトを使用しています. 多くの場合、データを転送するときに必要なのはオブジェクト型です. 基本的なデータ型をカプセル化することは、独自のプロパティとメソッドを持つことができるオブジェクトと同等です. これらのメソッドがあれば、それらを使用してデータを処理できます.
- 良いセキュリティ
Javaクラスがカプセル化された後、クラスの内部構造を自由に変更でき、メンバー変数をより正確に制御できます.同時に、他のクラスが自分のメンバー変数を自由に変更できないようにすることもできます.詳細は隠され、意のままに破壊することはできません.メンバー変数とデータ転送のセキュリティは保証されています.
- 異なる構造
パフォーマンス構造に関しては、基本データ型 (int i) はスタック上に作成され、オブジェクト型 (new Integer()) はヒープ上に作成されます。ヒープは大きなスペースを取得でき、ヒープ内の特定のコンテンツは人為的に配置されるため、基本型にはないいくつかのメソッドを使用する方が便利です。
- 詳細を非表示にし、使いやすい外部インターフェイスを提供する
例えば、車は多くの部品で構成されており、それぞれが独自の機能を持っていますが、最終的にはそれらを組み合わせて車になる必要があります。ドライバーにとっては、車内の部品がどのように見えても、それを追い払うことができれば、車にはハンドルがあり、それがインターフェースに相当します.インターフェースが統一されていれば、誰でも.運転できる人は車を運転できます。
- メンテナンス性が良く、再利用が容易
必要に応じて、外部インターフェイスを変更せずに内部構造とデータのみを変更する必要があり、その参照は影響を受けず、再利用が必要な場合は直接参照することもできます。自動車が多くの人に公開できるようにです。
つまり、データのセキュリティを実現するだけでなく、データをより適切に操作できます。コード構造を簡単に説明して理解できるようにすると同時に、さまざまなニーズを満たすさまざまなソリューション (さまざまなメソッドと属性をカプセル化) を提供します。開発効率が向上するだけでなく、コードの品質も向上します。