文章目录
1.String类
1.1 String类的实例化
在 Java 中,字符串属于对象,可以用String来创建和操作字符串。用String来创建字符串的方式有很多(构造方法很多),这里介绍三种常用的方式:
public class Main {
public static void main(String[] args) {
//直接使用字符串常量
String str = "Hello world!";
System.out.println(str);
//new 一个对象
String str2 = new String("Hello World!");
System.out.println(str2);
//字符数组转字符串
char[] arr = {'H','e','l','l','o',' ','W','o','r','l','d','!'};
String str3 = new String(arr);
System.out.println(str3);
}
}
在 Java 中,字符串没有以 '\0' 结尾的要求,与 C 语言有所区别。
(ps:官方文档:String (Java SE 19 & JDK 19) (oracle.com))
1.2 String类的常用方法
(1)获取字符串长度
形式:
字符串.length();
该方法返回的类型是int类型,为字符串的长度。

(2)String对象之间的比较
1.用“==”。对于基本类型变量==比较两个变量中存储的值是否相同,对于引用类型变量,==比较两个引用变量引用的是否为同一个对象,显然这不是这里所需要的方式。

2.判断String对象之间是否相等时,最好用字符串.equals()。在String中,重写了Object的equals()方法,所以直接调用即可。

3.当我们需要比较两个字符串的大小的时候,用int compareTo(String s)方法,String中实现了Comparable接口。

compareTo()的返回值类型为int型,当返回值为负的时候,如上图所示,调用者str1比str2小;为正的时候 str1大;为 0 的时候表示两者相等。
4.int compareToIgnoreCase(String str) 方法,此方法与compareTo()用法相同,只是它忽略大小写。

总结:3种方法
- boolean equals(String str)
- int compareTo(String str)
- int compareToIgnoreCase(String str)
(3)字符串查找
1.如数组那样访问下标的方法:char charAt(int index),返回index位置上字符,如果index为负数或者越界,抛出 IndexOutOfBoundsException异常。

2.indexOf()方法,String中重载了很多的indexOf()方法。

注意indexOf()里面是int ch类型,可以传字符类型,以为字符本质上是数字(每个字符都有自己的ASCII码值),

3.lastIndexOf()方法,与indexOf()方法用法类似,但是它获取的是最后一次出现的索引。

4.boolean contains(CharSequence s)方法。String类实现了CharSequence接口,所以可以传String类型。这个方法表示:当且仅当此字符串包含指定的s的值时才返回true。

总结:4种方法
- char charAt(int index)
- int indexOf()
- int lastIndexOf()
- boolean contains(CharSequence s)
(4)与转化相关的方法
1.数字和字符串之间的转化。
数字 转 字符串:

注意这些方法是静态方法。
class Student {
public String name;
public int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Student:" +"name=" + name + ", age=" + age ;
}
}
public class Main2 {
public static void main(String[] args) {
String str1 = String.valueOf(true);
System.out.println(str1);
String str2 = String.valueOf('c');
System.out.println(str2);
char[] arr = {'H','e','l','l','o'};
String str3 = String.valueOf(arr);
//offset参数是子阵列的第一个字符的索引。 count参数指定子数组的长度。
String str4 = String.valueOf(arr,2,3);
System.out.println(str3);
System.out.println(str4);
String str5 = String.valueOf(123.23);
System.out.println(str5);
String str6 = String.valueOf(123.2F);
System.out.println(str6);
String str7 = String.valueOf(123);
System.out.println(str7);
String str8 = String.valueOf(1234L);
System.out.println(str8);
String str9 = String.valueOf(1234L);
System.out.println(str9);
//如果参数是null ,那么一个字符串等于"null" ; 否则返回值obj.toString()
//所以要重写toString()方法!!!
String str10 = String.valueOf(new Student("小明",20));
System.out.println(str10);
}
}
结果:

字符串 转 数字
public class Main3 {
public static void main(String[] args) {
String str1 = "12.12";
double d = Double.parseDouble(str1);
System.out.println(d);
String str2 = "12.12F";
float f = Float.parseFloat(str2);
System.out.println(f);
//如果为 “100L” 或者 “100l” 会抛异常!
String str3 = "100";
long l = Long.parseLong(str3);
System.out.println(str3);
String str4 = "100";
int i = Integer.parseInt(str4);
System.out.println(i);
String str5 = "100";
short s = Short.parseShort(str5);
System.out.println(s);
String str6 = "127";
byte b = Byte.parseByte(str6);
System.out.println(b);
}
}
(PS:Double、Long……这些是基本类型的包装类,这里不做介绍,可以自己扩展一下。)
结果:

2.大小写转换。
- 转成小写:String toLowerCase()
- 转成大写:String toUpperCase()

注意,凡是要修改String字符串的方法都不会改变原来的值,只会返回一个新的对象(先拷贝),也就是说字符串是不可修改的。(具体的在——>JavaSE语法(14)—— 详细解读java中 String的不可变性与字符串常量池 以及 字符串拼接的过程 - 掘金 (juejin.cn) )
3.字符串转为字符数组。
- char[] toCharArray()

4.格式化
String format(); ,这是String类的静态方法。

(5)字符串替换
- String replace(char oldChar, char newChar)
- String replaceAll(String regex, String replacement)
- String replaceFirst(String regex, String replacement)
(PS:regex是正则表达式的意思,也就是说形参支持正则表达式)

(6)字符串截取


(7)字符串拆分
- String[] split(String regex) 将字符串按 regex 为界限分割。
- String[] split(String regex, int limit)将字符串按 regex 为界限分成 limit 组。
public class Main9 {
public static void main(String[] args) {
String str = "Hello1 World1 Hello2 World2";
//按照 空格 分割
String[] arr = str.split(" ");
for (String s : arr){
System.out.println(s);
}
System.out.println("----------------------------------");
//按照按照 空格 分割成2组
String[] arr2 = str.split(" ",2);
for (String s : arr2){
System.out.println(s);
}
}
}
结果:

注意这里的分组,你写了几组它就会分几组,不管后面是否还有空格。
特殊字符作为分割符可能无法正确切分, 需要加上转义。
“.” “$” “|” 和 “*” 等字符,必须得加双斜杠。

如果一个字符串中有多个分隔符,可以用"|"作为连字符。
这里以“=”与“&”作为分隔符。

(8)剔除空格的方法


本文详细介绍了Java中的String类,包括如何实例化String对象,如直接赋值、new操作以及从字符数组创建。接着讨论了String类的重要方法,如获取长度、比较字符串(equals(),compareTo())、查找(indexOf(),lastIndexOf())、转化(数字与字符串间的转换)、替换(replace())、截取(substring())、拆分(split())以及剔除空格的方法。强调了String对象的不可变性,即所有修改操作都会返回新对象。
1131

被折叠的 条评论
为什么被折叠?



