文章目录
一、概述
Java 没有内置的字符串类型, 而是在标准 Java 类库中提供了一个预定义类,很自然地叫做 String。每个用双引号括起来的字符串都是String类的一个实例。
String对象用于保存字符串,也就是一组字符序列,字符串常量对象是用双引号括起的字符序列,例如:"你好"
,"14.31"
,"toy"
等。
字符串字符使用的是Unicode字符编码,一个字符(不区分字符汉字等)占两个字节。
二、剖析
2.1 结构剖析
2.2 创建剖析
创建String对象有两种方式:
第一种,直接赋值:
String s = "arbor";
第二种,调用构造器:
String s = new String("arbor");
2.3 String特性
比如下面代码:
String a = "abc";
a = "xyz";
String a = "hello";
String b = "abc";
String c = a + b;
public class String01 {
String str = new String("arbor");
public void change(String str) {
str = "java";
}
public static void main(String[] args) {
String01 aaa = new String01();
aaa.change(aaa.str);
System.out.println(aaa.str);
}
}
三、String类的常用方法
equals(Object other)
:判断字符串内容是否相等,区分大小写;如果字符串与 other 相等,返回 true。
equalsIgnoreCase(String other)
:判断字符串内容是否相等,不区分大小写;如果字符串与 other 相等(忽略大小写),返回 true。
length()
:返回字符串的长度。
indexOf(...)
:获取字符(也可以是字符串)在字符串中第一次出现的索引,索引从0(或者可以自己指定)开始,如果找不到,返回-1。
lastIndexOf(...)
:获取字符(也可以是字符串)在字符串中最后一次出现的索引,索引从0(或者可以自己指定)开始,如果找不到,返回-1。
substring(...)
:截取指定范围的子串。只传入一个参数的话是从该数字的索引到最后一个字符。传入两个参数的话是从第一个索引值到第二个索引值,但是不包括第二个索引值,包头不包尾。
trim()
:返回删除了原始字符串头部和尾部的空格的新字符串。
charAt(int index)
:获取该字符串某处索引的字符。
toLowerCase()
:返回一个新字符串。将原始字符串中的大写字母改为小写。
toUpperCase()
:返回一个新字符串。将原始字符串中的小写字母改为大写。
replace(String str, String str2)
:返回一个新字符串。将一个字符串中的str更换为str2。
concat(String str)
:将str拼接到原始字符串后面。
split(...)
:根据传入的正则表达式将字符串分割,返回一个字符串数组。有些字符需要使用\
转义。
toCharArray()
:将字符串转换为字符数组。
compareTo(String anotherString)
:比较两个字符串的大小,前者大返回正数;后者大返回负数;如果相等,则返回0。
format(...)
:格式化字符串。
public static void main(String[] args) {
String name = "乔木先生";
int age = 18;
String info = "我的名字是%s,年龄是%d";
String formatStr = String.format(info, name, age);
System.out.println(formatStr);
}
输出结果:
intern()
:如果池中已经包含一个等于此String对象的字符串,则返回池中的字符串。否则,将此字符串添加到池中,并且返回此String对象的引用。
该方法最终返回的是常量池的对象地址。
startsWith(String prefix)
:如果字符串以 suffix 开头,则返回 true。
endsWith(String suffix)
:如果字符串以 suffix 结尾,则返回 true。
contains(String str)
:判断一个字符串中有没有str子串,有的话为true
join(...)
:返回一个新字符串,用给的字符连接所有元素。
String all = String.join(" / ", "S", "M", "L", "XL");
// all is the string "S / M / L / XL"