なぜラッパークラスが必要なのですか?
Javaは、基本的なデータ型がオブジェクト指向の操作に直接参加できないため、ラッパークラスを使用し、実際のニーズでオブジェクトフォームが必要になることが多いためです。 1。コレクションクラスは、list
Javaのラッパークラスは、基本的なデータ型がオブジェクト指向操作に直接参加できないという問題を解決します。簡単に言えば、いくつかのJavaメカニズムとAPIが原始型ではなくオブジェクトの使用が必要であるため、クラスをラップする必要があります。たとえば、コレクションクラス(ArrayList、Hashmapなど)、ジェネリック、およびヌル値表現を必要とするシナリオ。
1。コレクションクラスはオブジェクトのみを保存できます
Javaのコレクションフレームワーク(リスト、セット、マップなど)はオブジェクトのみを保存でき、INTやDoubleなどの基本タイプを直接保存できません。 ArrayList<int></int>
を記述すると、コンパイラがエラーを報告します。現時点では、整数やダブルなどのパッケージクラスを使用する必要があります。
List <Integer>番号= new ArrayList <>(); numbers.add(5); //自動ボクシング、最下層は実際には新しい整数です(5)
INTは保存されているように見えますが、実際には変換に役立つ自動ボクシングメカニズムです。このコードは、ラッパークラスなしでは実装できません。
2。ジェネリックは基本的なタイプをサポートしていません
Javaの一般的なメカニズムでは、型パラメーターが参照タイプである必要があります。つまり、あなたはこのように書くことはできません:
パブリッククラスボックス<int> {...} //エラーをコンパイル!
そして、あなたはこれを書くことができます:
パブリッククラスボックス<Integer> {...}
クラスに複数の数値タイプを処理するか、それらを一般的なコンテナとして使用する場合は、ジェネリックの要件を満たすためにラッパークラスを使用する必要があります。
3.「null値」または「逃した値」を示します
基本型にはデフォルト値があります。たとえば、INTのデフォルトは0です。BooleanのデフォルトはFALSEになります。しかし、いくつかのビジネスロジックでは、「この値は設定されていない」または「存在していない」という意味を表現したいと考えています。 Nullは現時点で非常に便利です。
たとえば、データベースクエリのフィールドはnullである場合があります。INTの代わりに整数を使用する方が適切です。
integer age = getagefromdatabase(); // nullを返すことができます
INTタイプの場合、「年齢は0」と「データが見つからない」を区別することはできません。
4。ツールメソッドと文字列変換
ラッパークラスは、文字列を対応する基本タイプに変換するなど、多くの実用的な方法を提供します。
string str = "123"; int num = integer.parseint(str); double d = double.parsedouble( "3.14");
これらのメソッドは、ユーザー入力の処理、構成ファイルの読み取り、JSONデータの解析の場合に非常に一般的です。ラッパークラスがない場合、これらの機能は自分で実装するか、サードパーティライブラリに依存する必要があります。
基本的にこれらが理由です。包装クラスは、基本的なタイプを置き換えるのではなく、オブジェクト指向の世界での欠点を補うために存在します。パッケージングクラスは、いくつかのパフォーマンスのオーバーヘッド(メモリフットプリントの大きさやアンボックスの損失など)をもたらしますが、最新のJVMでは、この影響はすでに非常に小さく、ほとんどの場合自信を持って使用できます。
以上がなぜラッパークラスが必要なのですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undress AI Tool
脱衣画像を無料で

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Javaは、基本的なデータ型がオブジェクト指向の操作に直接参加できないため、ラッパークラスを使用し、実際のニーズでオブジェクトフォームが必要になることが多いためです。 1.コレクションクラスは、リストが自動ボクシングを使用して数値を保存するなど、オブジェクトのみを保存できます。 2。ジェネリックは基本的なタイプをサポートしておらず、パッケージングクラスはタイプパラメーターとして使用する必要があります。 3.パッケージングクラスは、null値を表して、データまたは欠落データを区別できます。 4.パッケージングクラスは、データの解析と処理を容易にするための文字列変換などの実用的な方法を提供するため、これらの特性が必要なシナリオでは、パッケージングクラスは不可欠です。

ハッシュマップとハッシュテーブルの違いは、主にスレッドの安全性、ヌル価値のサポート、パフォーマンスに反映されます。 1.スレッドの安全性の観点から、ハッシュテーブルはスレッドセーフであり、その方法はほとんど同期メソッドであり、ハッシュマップはスレッドセーフではない同期処理を実行しません。 2。ヌル値のサポートに関しては、ハッシュマップは1つのnullキーと複数のヌル値を許可しますが、ハッシュテーブルはnullキーや値を許可しません。 3.パフォーマンスの観点から、ハッシュマップは同期メカニズムがないため、より効率的です。ハッシュテーブルは、各操作のロックパフォーマンスが低いです。代わりにconcurrenthashmapを使用することをお勧めします。

JITコンパイラは、メソッドインライン、ホットスポット検出とコンピレーション、タイプの投機と偏見、冗長操作の排除の4つの方法を通じてコードを最適化します。 1。メソッドインラインで呼び出しのオーバーヘッドを減らし、頻繁に小さな方法と呼ばれる挿入をコールに直接直接挿入します。 2。ホットスポットの検出と高周波コードの実行とそれを中央に最適化して、リソースを節約します。 3。タイプ投機は、敬v的な呼び出しを達成するためにランタイムタイプ情報を収集し、効率を向上させます。 4.冗長操作は、運用データの削除に基づいて役に立たない計算と検査を排除し、パフォーマンスを向上させます。

StaticMethodsinInterfaceswereIntroducatedinjava8toalowutilityは、interfaceitself.beforejava8、そのような導入のために導入されたコード、rediveTodisorgedCode.now、statecmethodssprovidreebenefits:1)彼らの可能性のある測定di

インスタンス初期化ブロックは、Javaで使用され、コンストラクターの前に実行されるオブジェクトを作成するときに初期化ロジックを実行します。複数のコンストラクターが初期化コード、複雑なフィールド初期化、または匿名のクラス初期化シナリオを共有するシナリオに適しています。静的初期化ブロックとは異なり、インスタンス化されるたびに実行されますが、静的初期化ブロックはクラスがロードされたときに1回のみ実行されます。

Injava、thefinalkeywordpreventsavariaibleのValue frombeingededafterassignment、ButiTsbehiviordiffersforprimitivesandobjectReferences

変換には、暗黙的で明示的な変換には2つのタイプがあります。 1.暗黙的な変換は、INTを2倍に変換するなど、自動的に発生します。 2。明示的な変換には、(int)mydoubleの使用など、手動操作が必要です。タイプ変換が必要な場合には、ユーザー入力の処理、数学操作、または関数間のさまざまなタイプの値の渡されます。注意する必要がある問題は次のとおりです。浮動小数点数を整数に変換すると、分数部分が切り捨てられ、大きなタイプを小さなタイプに変えるとデータの損失につながる可能性があり、一部の言語では特定のタイプの直接変換ができません。言語変換ルールを適切に理解することは、エラーを回避するのに役立ちます。

ファクトリーモードは、オブジェクトの作成ロジックをカプセル化するために使用され、コードをより柔軟でメンテナンスしやすく、ゆるく結合します。コアの答えは、オブジェクトの作成ロジックを一元的に管理し、実装の詳細を隠し、複数の関連オブジェクトの作成をサポートすることです。特定の説明は次のとおりです。工場モードは、NewClass()の使用を直接回避し、処理のための特別な工場クラスまたは方法にオブジェクトの作成を手渡します。複数のタイプの関連オブジェクトが作成され、作成ロジックが変更され、実装の詳細を非表示にする必要があるシナリオに適しています。たとえば、支払いプロセッサでは、Stripe、PayPal、その他のインスタンスが工場を通じて作成されます。その実装には、入力パラメーターに基づいて工場クラスによって返されるオブジェクトが含まれ、すべてのオブジェクトは共通のインターフェイスを実現します。一般的なバリアントには、単純な工場、工場法、抽象的な工場が含まれます。これらは異なる複雑さに適しています。
