字符串常量池
作为最基础的引用数据类型,Java 设计者为 String 提供了字符串常量池以提高其性能
字符串常量池的设计思想 字符串的分配,和其他的对象分配一样,耗费高昂的时间与空间代价, 作为最基础的数据类型,大量频繁的创建字符串,极大程度地影响程序的性能 JVM为了提高性能和减少内存开销,在实例化字符串常量的时候进行了一些优化 为字符串开辟一个字符串常量池,类似于缓存区 创建字符串常量时,首先坚持字符串常量池是否存在该字符串 存在该字符串,返回引用实例,不存在,实例化该字符串并放入池中 实现的基础: 实现该优化的基础是因为字符串是不可变的,可以不用担心数据冲突进行共享 运行时实例创建的全局字符串常量池中有一个表,总是为池中每个唯一的字符串对象维护一个引用,这就意味着它们一直引用着字符串常量池中的对象,所以,在常量池中的这些字符串不会被垃圾收集器回收
String对象常用方法
package string
;
import java
.util
.Arrays
;
public class StringDemo {
public static void main(String
[] args
) {
String lang
= "PHP";
lang
= "Java";
System
.out
.println(lang
);
String str1
= "Hello";
String str2
= "hello";
System
.out
.println(str2
.equals(str1
));
System
.out
.println(str2
.equalsIgnoreCase(str1
));
System
.out
.println(str1
.length());
System
.out
.println(str1
.concat(" World"));
System
.out
.println(str1
);
System
.out
.println(str1
.charAt(2));
System
.out
.println(str1
.indexOf('l'));
System
.out
.println(str1
.substring(1));
String str3
= "What the Fuck ?!";
String str3New
= str3
.replace("Fuck","****");
System
.out
.println(str3New
);
String str4
= "aa,bb,cc";
String
[] strArr
= str4
.split(",");
System
.out
.println(Arrays
.toString(strArr
));
String str5
= "aaa.bbb.ccc";
String
[] str5Arr
= str5
.split(".");
System
.out
.println(Arrays
.toString(str5Arr
));
String
[] str5Array
= str5
.split("\\.");
System
.out
.println(Arrays
.toString(str5Array
));
char[] chars
= str1
.toCharArray();
System
.out
.println(chars
[0]);
byte[] bytes
= str1
.getBytes();
System
.out
.println(bytes
[0]);
}
}