文章目录
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);
}
}
}
结果:
注意这里的分组,你写了几组它就会分几组,不管后面是否还有空格。
特殊字符作为分割符可能无法正确切分, 需要加上转义。
“.” “$” “|” 和 “*” 等字符,必须得加双斜杠。
如果一个字符串中有多个分隔符,可以用"|"作为连字符。
这里以“=”与“&”作为分隔符。