Java字符串常用方法总结 | Java

在很多编程语言中对字符串的处理都很重要,这也是面试经常会问到的,如果掌握地不牢固很容易答不上来

Java字符串

在Java中,String是一个引用类型。但由于字符串广泛应用于Java编程中,Java编译器对字符串进行了处理,可以直接用两个"来表示字符串。

// 我们通常的做法
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()方法,==是不可靠的。
e.g.

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与基本数据类型转换

这里转换比较简单,需要注意静态方法不属于实例,所以应该用来调用

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
今日推荐