Java文字列の一般的なメソッドの概要| Java

文字列の処理は、多くのプログラミング言語で非常に重要です。これは、インタビューでもよく聞かれます。しっかりと把握していないと、答えに失敗しがちです。

Java文字列

Javaでは、これStringは参照型です。ただし、文字列はJavaプログラミングで広く使用されているため、Javaコンパイラは文字列を処理し、2つ"直接使用して文字列を表すことができます。

// 我们通常的做法
String s = "Hello World!";
// 下面这种写法也可以
String s = new String("Hello World!");
// 还可以这样写 String内部是通过一个char[]表示的
String s = new String(new char[] {
    
    'H', 'e', 'l', 'l', 'o', '!'});

Java文字列の重要な機能は、文字列が不変(コンテンツ)であることです。

  • 宣言された文字列変数は変更可能です
  • 文字列自体は不変です
String s1 = "Hello";	// 此时有一块内存存着"Hello", 且可通过s1访问它
s1 = "World";			// 此时有一块内存存着"Hello", 还有一块内存存着"World", 通过s1只能找到"World", "Hello"并未改变

ここでは、簡単なスタックメモリ分析を見ることができます

Java文字列操作

文字列の比較

信頼性の低いequals()メソッドしか使用できませ==ん。
例えば

String s1 = "Hello";
String s2 = "Hello";
String s3 = "World";
String s4 = "wOrLd";

System.out.println(s1.equals(s2));				// true
System.out.println(s3.equals(s4));				// false
System.out.println(s3.equalsIgnoreCase(s4));	// true

部分文字列検索または検索

  • indexOf()左から右に部分文字列を見つけて、添え字を返します
  • lastIndexOf()右から左に部分文字列を見つけて、添え字を返します
  • contains()特定の部分文字列を含めるかどうかを決定する
  • startWith()特定の部分文字列で開始するかどうかを決定します
  • endWith()特定の部分文字列で終了するかどうかを決定します
String s1 = "Are you ok ?";
System.out.println(s1.indexOf("o"));
System.out.println(s1.lastIndexOf('o'));
System.out.println(s1.contains("you"));
System.out.println(s1.startsWith("are"));
System.out.println(s1.endsWith(" ?"));
// 输出:
//      5
//		8
//		true
//		false
//		true

ストリングスプライシング

  • +スプライシング

出力時に+は、文字列と数値のスプライシング出力を直接使用できます。

String s1 = "Hello";
int n1 = 8848;
float f1 = 10.24f;
boolean b1 = false;
System.out.println(s1 + n1 + f1+ b1);
// 输出:
//      Hello884810.24false

文字列間の+スプライシングを使用する

String s1 = "Hello";
String s2 = "World";
String s3 = s1 + ' ' + s2;	// s3 = "Hello World"
  • 静的メソッドjoin():文字列を使用して文字列の配列を連結します
String[] sArr = {
    
    "Hello", "Hi", "Bye"};
String s = String.join("--", sArr);		// 静态方法 所以是String.join()
System.out.println(s);
// 输出:
//      Hello--Hi--Bye

先頭と末尾の空白の文字列を削除します

  • trim()
    trim()頭と尾削除、(英語)を空格\t\r\n
String s1 = " Hello \u3000";		// \u3000是中文空格Unicode编码(站长之家有转换工具 感兴趣的可以看看)
String s2 = "\t\nWorld \r ";
System.out.println(s1.trim());
System.out.println(s2.trim());
// 输出:
//      `Hello   `
//      `World`
  • strip()
    strip()含まれているtrim()機能、および中国語のスペースと同様のスペースを削除することもできます
  • stripLeading左側のスペースのみを削除します
  • stripTrailing右側のスペースのみを削除します
String s1 = " Hello \u3000";
String s2 = "\t\nWorld \r ";
System.out.println(s1.strip());
System.out.println(s2.strip());
// 输出:
//      `Hello`
//      `World`

文字列のセグメンテーション

  • split
String s1 = "Are you ok ?";
String[] sArr = s1.split(" ");
System.out.println(Arrays.toString(sArr));		// 推荐这种打印方式 别用for
// 输出:
//      [Are, you, ok, ?]
  • substring()
    substring()その本質は部分文字列を抽出することであり、これは一種のセグメンテーションと見なすこともできます。
String s1 = "Are you ok ?";
System.out.println(s1.substring(4));		// [4, s1.length()-1]
System.out.println(s1.substring(4, 7));		// [4, 7)
// 输出: 
//      you ok ?
// 		you

部分文字列の置換

  • replace()
    replace()元の文字列を変更しないでください。新しい文字列が返されます
String s1 = "Are you ok ?";
String s2 = s1.replace("o", "ooo");		// 要么用另一个变量接收 要么直接打印 s1未改变
System.out.println(s2);

フォーマットされた出力

  • format()
    静的メソッド、注意String.format()してください
String s = "My name is %s, and I'm %d years olds.";
System.out.println(String.format(s, "XXX", 18));
// 输出:
//      My name is XXX, and I'm 18 years olds.

型変換

Stringとchar []の間で変換する

String s1 = "Hello World!";
char[] sArr = s1.toCharArray();
String s2 = new String(sArr);

System.out.println(Arrays.toString(sArr));
System.out.println(s2);
// 输出:
//      [H, e, l, l, o,  , W, o, r, l, d, !]
//      Hello World!

文字列と基本的なデータ型の変換

ここで変換は、注意を払う必要があり、比較的簡単で静态方法ないインスタンス属し、それはすべきであると呼ばれます

String s1 = "123";
String s2 = "123.45f";
String s3 = "false";
float f = 80.86f;

System.out.println(Integer.parseInt(s1));
System.out.println(Float.parseFloat(s2));
System.out.println(Boolean.parseBoolean(s3));
System.out.println(String.valueOf(f));
// 输出:
//      123
//      123.45
//		false
//		80.86

おすすめ

転載: blog.csdn.net/qq_40759015/article/details/114602296