Javaでは、文字列は、それ自体クラスで、参照型です。
しかし、直接使用することができます「...」文字列を示すために、JavaのコンパイラのString特別扱い。
文字列s =「こんにちは」
、実際に文字列内部文字列の文字によって[]アレイが表され、従って、次の文言が可能である:
ストリングS2 =新しい新しい文字列(新たな新しいCHAR [] {「H」、「E '' L '' L '' O「})
文字列あまりにも一般的な理由は、Javaが提供して"..."この文字リテラル表現を。
Java文字列文字列の重要な特徴は不変です。
これは、民間最終チャー[]フィールドの内部により変性、および任意の修飾チャーなし[]メソッドを実装していません。
パブリック クラスcatchExample2 { 公共 静的 ボイドメイン(文字列[]引数){ 文字列s = "こんにちは" ; System.out.println(S); // こんにちは 、S = s.toUpperCase(); System.out.println(S); // ハロー } }
文字列の内容を説明していない上記の例では、ここではそれが作成された新しい文字列があり、変数です。
1.文字列の比較
、我々は2つの文字列が同じであるかどうかを比較したい場合は、あなたではなく==使うよりのequals()メソッドを使用する必要があります。
参照型は、列挙型を除いて、等号を使用する必要があります。
パブリック クラスcatchExample2 { 公共 静的 ボイドメイン(文字列[]引数){ 文字列S1 = "こんにちは" ; 文字列s2を = "こんにちは" ; System.out.println(S1 == S2)。 // 真 のSystem.out.println(s1.equals(S2)); // 真 } }
==と表面が完全に等価であると等しいです。
私たちは、ライトへの道を交換する場合は、完全に異なるものとなる可能性があります。
パブリック クラスcatchExample2 { 公共 静的 ボイドメイン(文字列[]引数){ 文字列S1 = "こんにちは" ; ストリングS2 = "HELLO" .toLowerCase()。 System.out.println(S1 == S2)。 // 偽 のSystem.out.println(s1.equals(S2)); // 真 } }
コンパイル時にJavaコンパイラが自動的に定数プールへのオブジェクトとすべて同じ文字列を置く、
等しいだけで一貫性のある文字列の内容かどうかを決定する必要があり、実際に==判断はメモリアドレスです。
「こんにちは」と「こんにちは」、実際にそう確かに、ない同じメモリアドレスを別の文字列を表します。
あなたは大文字と小文字を区別しない比較をしたい場合は、equalsIgnoreCase()メソッドを使用することができます。
Stringクラスはまた、サブストリングを抽出するサブストリングを検索するためのいくつかの方法を提供します。一般的に使用される方法は、以下のとおりです。
//は、部分文字列が含まれています。 「こんにちは」.Contains(「LL」) // 予告含まれています()メソッドのパラメータ文字列のCharSequenceは、親クラスであるため、代わりに文字列ののCharSequenceです。 // サブストリングが最初に現れるの位置: "こんにちは" .indexOf( "L"); // 2 // の部分文字列の最後に出現する位置: 「こんにちは」.lastIndexOf(「L」); // 3 // ストリングで始まる場合: 「こんにちは」(「彼の」).startsWith; // trueに // 子を持つ文字列終了した場合: 「こんにちは」.endsWith(「LO」); // trueに // セクションでは、異なるのpythonで、単一のデジタル値ではなく、次の値のすべてを取ることを意味するものではありません。 "こんにちは" .substring(2); // LLO "こんにちは" .substring(2,4); // LL
2.削除空白と最後の
使用トリム()メソッドは、最後に空白文字列の末尾を削除することができます。空白文字、スペース、\トン、\ rを含む、\
"\ tHello \ rを\ n"は.trim() // こんにちは
注:トリム()は、文字列の内容を変更しますが、新しい文字列を返していません。
別のストリップ()メソッドも除去してもよいし、空白文字の最後の文字列。
これとトリム()が異なる場合、空白文字が削除され、中国\ U3000に類似しています。
文字列は、文字列が空、空の文字列であるかどうかを決定するためのisEmpty()とISBLANKの()を提供します。
3.サブ置き換え
文字列にサブストリングに置換されることを、2つの方法があります。一つは、文字または文字列として交換されます。
文字列s = 「こんにちは」;
s.replace( 'L'、 'W')。
他には、正規表現の置換によって次のとおりです。
文字列s = 「A ,, B、C、D」
s.replaceALL( "[\\、\\:\\ S] +"、 "")
4.分割文字列
の文字列のセグメントに分割()メソッド、およびまた、渡された正規表現を使用しました:
文字列s = 「A、B、C、D」。 文字列[] SS = s.plit( "\\")。 // { "A"、 "B"、 "C"、 "D"}
文字列の連結
文字列連結静的メソッドは、指定された文字列配列の文字列と接続され、)(参加します:
文字列[] ARR = { "A"、 "B"、 "C" } 文字列s = String.join( "***"、ARR)。 // "A *** B *** C"
6.変換は
、実質的に文字列に任意のタイプまたは参照タイプを取る静的メソッドのvalueOf()を使用します。
これは、オーバーロードされたメソッドで、コンパイラが自動的に方法に従って、適切なパラメータを選択します:
String.valueOf(123)。// "123" String.valueOf(45.67)。// "45.67" String.valueOf(真)。// "真" String.valueOf(新しいオブジェクト()); // 类似java.lang.Object@636be97c
他の種類の中に入れた文字列は、それが状況下で必要です。
INT N1 = Integer.parseInt( "123"); // 123 INT N2 = Integer.parseInt( "FF"、16); // 進変換器、255
変換文字列boolean型:
ブール B1 = Boolean.parseBoolean( "真"); // 真の ブール値 B2 = Boolean.parseBoolean( "FALSE"); // 偽
特別な注意を払って、文字列intに変換されていない、整数そこはgetInteger(スティング)メソッド、
しかしシステム変数整数を対応する文字列を変換します:
Integer.getInteger( "のjava.version");
[] charに変換される
ことにより、文字列とタイプchar []を変換することができます。
CHAR [] CS = 「こんにちは」.toCharArray()。 文字列s = 新しい文字列(CS)
あなたは、char []配列、文字列を変更し、変更しない場合:
パブリック クラスcatchExample2 { 公共 静的 ボイドメイン(文字列[]引数){ 文字 [] CS = "こんにちは" .toCharArray()。 文字列s = 新しい文字列(CS)。 System.out.println(S); // こんにちは CS [0] = 'X' ; System.out.println(S); // こんにちは } }
、新たな文字列(文字[])、それは直接チャーに参照されることはありません[]配列によって新しい文字列インスタンスを作成するためである
ため、外部の文字[]配列は、内部チャーStringインスタンスに影響を与えない変更します[ ]配列、これらの2つの異なる配列があるからです。
パッケージcom.imooc.iexecption。 輸入java.util.Arrays。 クラススコア{ プライベート INT []スコア。 公共スコア(INT []スコア){ この .scores = スコア。 } 公共 のボイドprintScores(){ System.out.println(Arrays.toString(スコア))。 } } パブリック クラスcatchExample2 { 公共 静的 ボイドメイン(文字列[]引数){ INT []スコア= 新しい INT [] {88、77、51、66 }。 スコアS = 新しいスコア(得点)。 s.printScores(); スコア[ 2] = 99 。 s.printScores(); } }
我々は2つの出力は、内部スコア外部の着信のint []配列への直接参照に、同じではないことがわかっ
た外部コードはint []配列に変化を引き起こすことができます。