String API 的常见方法使用举例(Java)
—————————————————————————————————
1. String类的初见
我们都知道String类代表字符串,并且java程序的所有字符串文字都被看做该类的实例(可理解为方法的对象)
//构造函数(常用三种形式)
//1.空参(最常用)
String string = new String();
string = "asd";
System.out.println(string);
//结果会输出以字符串形式asd
//2.可以使用ASCII码转字符,以字符串形式输出
byte[] bytes = {
65,66,67};
String string1 = new String(bytes);
System.out.println(string1);
//结果会输出以字符串形式ABC
//3.构造一个新的String由指定用指定的字节的数组解码charset (一般常用UTF-8) (不要求掌握)
String(byte[] bytes, Charset charset)
String(String original)
//初始化新创建的String对象,使其表示与参数相同的字符序列; 换句话说,新创建的字符串是参数字符串的副本。
//StringBuffer和StringBuilder都是缓冲流字符串,防止字符串拼接时产生不必要的垃圾却因为字符串的特性无法去除
String(StringBuffer buffer)
//分配一个新的字符串,其中包含当前包含在字符串缓冲区参数中的字符序列。
String(StringBuilder builder)
//分配一个新的字符串,其中包含当前包含在字符串构建器参数中的字符序列。
—————————————————————————————————
2.String的一个重要特性
字符串的实例储存在永久代(元空间)之中
该节主要讲String类,所以略讲新生代/老年代/永久代的概念
可以大概理解为对象(实例)被GC回收的快慢,新生代迅速被回收,老年代被回收更慢,同理,永久代代表永远不会被GC回收
(jdk1.8后永久代被取消,与之相似但不等同的新概念元空间被提出,不做详解)。
用2个例子来解释:
//字符串相同的对象被储存在同一个地址
String string2 = "a";
String string3 = "a";
String string4 = new String("a");
System.out.println(string2 == string3);
System.out.println(string2 == string4);
//第一个结果为true 说明了字符串相同的对象被储存在同一个地址
//这样的结果正是String类实例被储存在元空间的表现
//第二个结果为false 是String的一个特点:即便内容一样,新new的地址也不一样
—————————————————————————————————
3.字符串的拼接注意事项
byte