ビッグデータレビューコースDay01_javaの基本

Javaの原則

String、StringBuilder


[外部リンク画像の転送に失敗しました。ソースサイトにヒル防止リンクメカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします(img-CvdFYU1Z-1615170017009)(e762975cc8967c3a93a5d9dc6790d294.png)]

String、StringBuilder、StringBufferの使用シナリオ

  1. 文字列の追加操作や変更が少ない場合は、String str = "hello"を使用して変数を定義することをお勧めします。
  2. 文字列の加算操作が多い場合は、StringBuilderの使用をお勧めします。
  3. 複数のスレッドが使用される場合、StringBufferが使用されます。

String、StringBuilder、およびStringBufferの実行効率
StringBuilder> StringBuffer> String



ArrayList、LinkedList、Vector

ArrayList
ArrayListは、最も一般的に使用されるList実装クラスであり、要素への高速ランダムアクセスを可能にする配列によって内部的に実装されます。
利点:迅速なクエリと迅速な変更。
短所:追加と削除が遅い。
1)配列の欠点は、各要素の間に間隔がないことです。配列のサイズが満たされない場合は、ストレージ容量を増やす必要があります。元のサイズは1.5倍に拡張され、
既存のアレイが新しいストレージスペースにコピーされます。(メモリ内で連続)
2)ArrayListの中央位置から要素を挿入または削除する場合、配列をコピーおよび移動する必要があり、これは比較的コストがかかります。ランダム検索とトラバーサルには適していますが、挿入と削除には適していません。ArrayListと同様に、
Vector
Vectorも配列を介して実装されます。違いは、スレッドの同期をサポートすることです。つまり、同時に書き込む複数のスレッド
によって引き起こされる不整合を回避するために、一度に1つのスレッドのみがVectorを書き込むことができますが、同期には高い必要があります。したがって、コストがかかるため、ArrayListにアクセスするよりもアクセスが遅くなります。
LinkedList
LinkedListは、リンクリスト構造を使用してデータを格納します。その長所と短所は、配列の場合とは逆です。
利点:迅速な追加と削除
追加または削除するたびに、他の多数の要素には影響しませんが、リンクリスト内の関連するコンテキストにのみ影響します。
短所:クエリが遅く、変更が遅い。
要素をクエリするたびに、リンク関係に従って1つずつ一致させる必要があります。
データの動的な挿入と削除に非常に適しており、ランダムアクセスとトラバーサルの速度は比較的遅いです。

配列とリンクリスト

配列
配列は事前に固定長を定義する必要があり、データの動的な増減に適応することはできません。スタックからスペースを割り当てることは、プログラムにとって便利で高速ですが、自由度は小さいです。
利点:添え字の配置、強力なランダムアクセシビリティ、および高速検索を使用します。
短所:挿入と削除の効率が低く、メモリ使用率が低く、メモリスペースの要件が高く、十分な連続メモリスペースが必要です。
リンク
リストリンクリストはストレージを動的に割り当て、データの動的な増減に適応できます。ヒープからのスペースの割り当てには大きな自由度がありますが、アプリケーション管理はより面倒です。
利点:挿入と削除の効率が高い。メモリ使用率が高く、メモリが無駄になりません。
短所:ポジショニングクエリの速度が遅く、変更が遅い。
概要:データにすばやくアクセスする必要があり、要素を挿入または削除することはめったにない場合は、配列を使用する必要があります。逆に、要素を頻繁に挿入および削除する必要がある場合は、リンクリストデータ構造を使用する必要があります。


Javaでのオーバーロードと書き換え

オーバーロードされた
メソッド名は同じである必要がありますが、パラメーターのタイプと番号は異なり、戻り値のタイプは同じでも異なっていてもかまいません。
書き換え
1.サブクラスでは、基本クラスから継承したメソッドを必要に応じて書き換えることができます。
2.書き換えられたメソッドと書き換えられたメソッドは、同じメソッド名、パラメーターリスト、および戻り値の型を持っている必要があります。
3.オーバーライドされたメソッドは、オーバーライドされたメソッドよりも厳密なアクセス権を使用できません。


シングルトンモード

いわゆるシングルトンとは、プログラム全体に1つのインスタンスしかないことを意味します。このクラスは、1つのオブジェクトのみが作成されるようにしながら、独自のオブジェクトを作成する責任があります。Javaでは、ツールクラス
[ロード構成、書き込みログ、Webアクセスカウンター]の実装で一般的に使用されます。


機能
クラスコンストラクターはプライベートで
あり、独自のタイプの属性を保持し、
外部でインスタンスを取得するための静的メソッドを提供します

レイジーマンモードスレッドは安全ではなく、初期化が遅れています

[外部リンク画像の転送に失敗しました。ソースサイトにヒル防止リンクメカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします(img-zd6obfCf-1615170017011)(eb084b02750b9d865fe6b8bbcb7516cc.png)]


hungry manモードはスレッドセーフで一般的に使用されていますが、最初に初期化されるため、ガベージを簡単に生成できます。


[外部リンク画像の転送に失敗しました。ソースサイトにヒル防止リンクメカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします(img-HRlEdAUG-1615170017011)(0239ca67dd447d830d40b8da5cfddd2b.png)]

ダブルロックモードはスレッドセーフで、初期化が遅れます。この方法では、ダブルロックメカニズムを使用します。これは安全で、マルチスレッドの状況で高いパフォーマンスを維持できます。

[外部リンク画像の転送に失敗しました。ソースサイトにヒル防止リンクメカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします(img-0fcWGzHk-1615170017013)(d7a733b9ffd84d79c1af20040ba539d6.png)]

工場モード

ファクトリパターン(ファクトリパターン)は、Javaで最も一般的に使用されるデザインパターンの1つです。このタイプのデザインパターンは、オブジェクト
作成するための最良の方法を提供する作成パターンに属しています
ファクトリパターンは、シンプルファクトリパターン、ファクトリメソッドパターン、抽象ファクトリパターンに分けられ、すべてデザインパターンの作成パターンに属します。その主な機能は、オブジェクトの
インスタンス化部分の抽出を支援することです。目的は、システム内のコード結合を減らし、システムのスケーラビリティを強化することです。この記事では、単純なファクトリモデルについて説明します。
ケース
ShapeインターフェイスとShapeインターフェイスを実装するエンティティクラスを作成します。次のステップは、ファクトリクラスShapeFactoryを定義することです

[外部リンク画像の転送に失敗しました。ソースサイトにヒル防止リンクメカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします(img-zOgnTibp-1615170017015)(67eb2f38239a26a8f2d92c8e7fc7b2d3.png)]
ここに画像の説明を挿入します


ここに画像の説明を挿入します

ここに画像の説明を挿入します
ここに画像の説明を挿入します

利点:1。呼び出し元は、名前を知っている限り、オブジェクトを作成したいと考えています。2.高いスケーラビリティ。製品を追加する場合は、ファクトリクラスを拡張するだけで済みます
3.製品の特定の実装をシールドし、発信者は製品のインターフェースのみを気にします。
短所:製品を追加するたびに、具体的なクラスとオブジェクトの実装ファクトリを追加する必要があります。これにより、システム内のクラスの数が2倍になり、システムの複雑さ
ある程度増加し、特定の数も増加します。システム内のクラス。これは良いことではありません

jvmクラスのロードメカニズム

JVMは、コンピューティングユニットをシミュレートし、.classバイトコードファイルをコンピューターが認識できる命令に変換するために使用されるプロセスです
。Javaプログラムのコンパイル実行フロー

ここに画像の説明を挿入します
ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/xianyu120/article/details/114523093
おすすめ