String
java8的API是这样定义String的
public final class String
extends Object
implements Serializable, Comparable<String>, CharSequence
实现了Serializable, Comparable<String>, CharSequence
这三个接口
要点
- String 是所有字符串实例的抽象定义类
- String对象是不可变的。即当String被创造出来时,String就已经不可变了。因此当执行
String str = “abc”
,再执行str = str +"d"
,相当于先在堆内存创建了一个"abc"对象, 接着将栈内存指向"abc".然后又在堆内存创建了一个"d",将两个字符串合并后创建一个新的"abcd"。然后将栈内存中的str指向这个新的字符串。因此,在java String中,不要使用太多的字符拼接 “+”,这样会产生许多的垃圾,降低系统性能 - 可以使用StringBuffer来产生一个可变的字符串。和String类不同,StringBuffer类可以被修改,并且不产生新的未使用对象
静态方法
-
valueOf(参数)
即,返回这个对象的String形式 -
oin(字符串序列, 继承CharSequence的elements)
示例代码:(引用java8API)
```java List<String> strings = new LinkedList<>(); strings.add("Java");strings.add("is"); strings.add("cool"); String message = String.join(" ", strings); //message returned is: "Java is cool"
-
public static String format(String format, Object... args)
使用格式化参数返回一个被格式化好的字符串,请参考JAVA字符串格式化-String.format()的使用
-
public static String copyValueOf(char[] data)
返回一个String对象,相当于使用valueOf()方法。忘记了请查看要点1
常用实例方法
-
concat(String s)
将字符串s加在当前对象的后面,并将此对象返回 -
compareTo(String anotherString)
根据Unicode码,比较两个字符串的形式。首先比较长度,如果当前字符串对象的长度比参数字符串的长度长。那么返回一个正值,且这个值得大小就是当前字符串的长度减去参数字符串的长度,否则就返回一个负值,大小也是当前字符串的长度减去参数字符串的长度。如果当前字符串对象的长度和参数字符串的长度相同,返回值有三种可能
一、当前两个字符串的每一个字符都相同,返回0
二、当前字符串对象和参数字符串不同,且当前字符串的第一个不同的Unicode码大于参数字符串第一个不同的Unicode码,返回Unicode码的差值,是一个正数
三、当前字符串对象和参数字符串不同,且当前字符串的第一个不同的Unicode码小于参数字符串第一个不同字符的Unicode码,返回Unicode码的差值,是一个负数 -
public boolean contains(CharSequence s)
比较当前对象是否包含字符串s,如果包含返回true,否则返回false -
public boolean endsWith(String suffix)
比较当前对象是不是以suffix结尾,如果是,返回true,否则,返回false -
public boolean equals(Object anObject)
★
比较两个字符串是否相同,如果相同返回true,否则返回false,该方法和==
的区别在于,该方法判断的是字符串序列,而==
判断的是String对象,例如
String str1 = "123"
String `:wqstr2 = new String(new char[]{"1", "2", "3"});
System.out.println(str1 == str2); // 输出false
System.out.println(str1.equals(str2); // 输出true
public byte[] getBytes()
使用默认的编码集将当前字符串对象编码为二进制public String[] split(String regex)
根据给定的 regex 返回一个字符串数组public String trim()
返回一个去掉两端空格的字符串,文本清洗中通常和split()方法搭配使用,例如
String str1 = "I am LiHua, I am come China ";
String[] spliteResult = str1.trim().split(" ");
System.out.println("分割后的数组为: " + Arrays.toString(spliteResult));
// 输出结果
// 分割后的数组为: [I, am, LiHua,, I, am, come, China]
public String substring(int beginIndex,int endIndex)
从当前字符串对象中分割出一个新的字符串对象public String toLowerCase()
和public String toUpperCase()
返回当前对象的小写/大写形式
除此之外,还有很多继承方法和实例方法没有列出来,要找其他的方法请查询官方API。不对的地方请一定斧正!