Javaで一般的に使用されるシステムクラス

Javaの最上位のルートクラスはObjectです。

オブジェクトはすべてのクラスの祖先であり、すべてのオブジェクトの基本的な状態と動作を定義します。クラスを定義するとき、親クラスが指定されていなくても、JavaはそれをObjectのサブクラスとして自動的に定義します。

Javaコアパッケージ

12のコアJavaパッケージがあり、その中には、
(1)java.langパッケージがすべてのプログラミングアプリケーションの基本クラスをカプセル化します。
(2)java.utilパッケージは、システム機能の定義と使用法、日付関数などのユーティリティクラスとコレクションクラスを提供します。クラス、コレクション、その他のツール;
(3)java.appletパッケージは、Appletの実行に必要なすべてのクラス、主にAppletのコンテンツにアクセスするための通信クラスを
提供します; (4)java.rmiパッケージは、必要なクラスを提供しますプログラムのリモートメソッド呼び出し用。

Javaのシステムクラス

Systemクラスは最終クラスです。java.ioパッケージでは、すべてのメソッドがクラス変数を使用して呼び出され、Systemクラスをインスタンス化することはできません。Systemクラスは主に、標準入出力およびシステム環境情報のアクセス設定を提供するために使用されます。Systemクラスのプロパティは次のとおりです。
(1)public static final InputStream in:標準入力;
(2)public static final OutputStream out:標準出力;
(3)public static final PrintStream err:標準エラー出力。

Javaの文字列クラス

Stringメソッドでは、
(1)toLowerCase()メソッドが小文字に変換されます。
(2)valueOf()メソッドが対応する値を取得します。
(3)charAt()メソッドが指定された文字を抽出します。文字列内の位置;
(4)append()はStringBufferのメソッドです(Stringクラスにはありません)。

JavaのStringBufferクラス

StringBufferオブジェクトの長さと容量を取得および設定するためのメソッドは、length()、capacity()、setLength()であり、呼び出しメソッドは次のとおりです。
(1)sl.length():の文字数を返します。 sl;(英語と中国語の両方の文字は文字列の長さです)
(2)sl.capacity():slの容量、つまり、通常は長さよりも大きいメモリスペースの量を返します;
(3)sl.setLength( int newLength):slの文字数を変更します。newLengthが元の数より大きい場合、新しく追加された文字は空( "")になります。逆に、文字列の最後の数文字は削除されます。
例:

StringBuffer buf1=new StringBuffer(20);
System.out.println(buf1.length()+","+buf1.capacity());

結果:

0,20

String、StringBuffer、StringBuilderの違い

1.定義の違い
文字列:文字列定数
StringBufferとStringBuilderは文字バッファ変数です

2.スレッドセーフの違い:
StringBufferとStringBuilderのメソッドと関数は完全に同等ですが、StringBufferのほとんどのメソッドは、synchronizedキーワードで装飾されているため、スレッドセーフですが、StringBuilderにはこの変更がなく、スレッドと見なすことができます。安全ではありません

3.実行速度:
StringBuilderとStringBufferの「可変」特性は、次のように要約されます。
(1)追加、挿入、および削除メソッドは、基本的にSystem.arraycopy()を呼び出して、目標を達成します
(2)substring(int、int ))メソッドは、String(value、start、end-start)を更新して目標を達成することです。したがって、部分文字列操作を実行する場合、基本的にStringBuilderとStringの間に違いはありません。
一般に、実行速度の観点からの3つの比較:StringBuilder> StringBuffer> String。
4.使用シナリオ:
(1)Stringクラスを使用するシナリオ: Stringクラスは、定数の宣言や少量の変数操作など、文字列が頻繁に変更されないシナリオで使用できます。

(2)StringBufferクラスを使用するシナリオ:頻繁な文字列操作(スプライシング、置換、削除など)およびマルチスレッド環境での実行では、XML解析、HTTPパラメーター解析、カプセル化などのStringBufferの使用を検討できます。

(3)StringBuilderクラスを使用するシナリオ:頻繁な文字列操作(スプライシング、置換、削除など)およびシングルスレッド環境での実行では、SQLステートメントアセンブリ、JSONパッケージングなどのStringBuilderの使用を検討できます。 。。
5.区別:
(1)String型のStringオブジェクトは不変です。Stringオブジェクトが作成されると、このオブジェクトに含まれる文字シリーズは、オブジェクトが破棄されるまで変更できません。
(2)StringBuilderおよびStringBuffer文字列の型は可変です。違いは、StringBufferタイプがスレッドセーフであるのに対し、StringBuilderはスレッドセーフではないことです。
(3)共有変数の挿入と削除を伴うマルチスレッド環境の場合、StringBufferが最初の選択肢です。これが非マルチスレッド操作であり、文字列のスプライシング、挿入、および削除操作が多数ある場合は、StringBuilderが最初の選択肢です。結局のところ、Stringクラスは一時変数を作成することによって文字列スプライシングを実装しますが、これはメモリを消費し、効率的ではありません。StringBuilderは、JNIを介して究極の操作を実装します。

Stringクラスの文字列接続は「+」を使用しますが、StringBufferの接続はappend()メソッドを使用します。
StringBufferを直接Stringクラスオブジェクトに変換することはできません。StringBufferオブジェクトをStringクラスオブジェクトに変換するには、toString()メソッドを呼び出す必要があります。

文字列作成オブジェクトと新しい作成オブジェクトの違い

二重引用符で囲まれいるのは文字列定数(string)であり、一重引用符で囲まいるのは文字定数(char)です。

String s1="bc";
String s2="bc";
创建了一个对象

Javaは文字列プールを使用して文字列を管理し、JVMはJavaプログラムの実行時にメモリ内に文字列バッファプールを作成します。Java変数操作の場合、メモリは主にスタックとヒープの2つの部分に分けられます。スタックは、基本型または組み込み型(主にchar、byte、short、int、long、float、double、boolean、およびオブジェクト参照)を格納するために使用されます。データは共有できます。速度はレジスターに次ぐ速度であり、ヒープ。ヒープはオブジェクトを格納するために使用されるメモリ空間であり、文字列バッファプールはヒープ空間です。ヒープは暗黙的なオブジェクト(文字列定数など)を格納したり、オブジェクトを表示したり(newでオブジェクトを作成するなど)できます。この例では、String s1 = "bc"を使用してオブジェクトを作成する場合、JVMは最初に、値が "bc"のオブジェクトがバッファー・プールにあるかどうかを判別し、ない場合は、s1が参照するようにオブジェクトを作成します。オブジェクト。s2が作成されると、JVMはバッファプールで同じ値のオブジェクトを検出し、s2はs1によって参照されるオブジェクト「bc」を参照します。

String s3="bc";
String s4=new String(s3);
创建了两个对象

この例では、new演算子を使用してオブジェクトを作成します。このオブジェクトは、Stringクラスのコンストラクターを呼び出して、パラメーターと同じ文字列のシーケンスを表す新しいオブジェクトを作成します。つまり、新しく作成された文字列は、パラメータ文字列のコピーです。したがって、2つのオブジェクトが作成されます。1つは文字列定数の形式で文字列バッファプールに作成され、もう1つはnew演算子によってヒープに作成されます。

Javaのマッチャークラス(マッチャー)

(1)ブール値matcher.find()メソッドを使用して、次のパターン一致文字列を検索します。
(2)int matcher.start()メソッドを使用して、一致する文字列の開始インデックス整数値を返します。
(3)int matcher.end()メソッドは、一致する文字列の終了インデックスの整数値を返すために使用されます。
(4)静的ブール値matches()メソッドは、入力文字列をパターン文字列と比較するために使用されます。

おすすめ

転載: blog.csdn.net/zhanlong11/article/details/114417367