Java-String类
·
一、String类【开发重点】
1. 创建字符串的方式:【面试重点】
(1) String s1 = "hello"; // 只会创建一个对象,在串池中产生
(2) String s2 = new String("world"); // 产生两个对象。一个在堆空间中,一个在串池中产生。
注意:如果串池中已经存在的字符串对象,不会重复创建。
2. String类中常用方法:
(1) char charAt(int index):根据下标获取对应的字符。
注意:String类中封装了一个 char类型数组,下标范围 0~字符串的长度-1,如果指定的下标超出下标
范围,则运行报错,错误信息为:java.lang.StringIndexOutOfBoundsException(数组下标越界)
(2) boolean contains(String str):判断一个字符串中是否包含 str子串,包含-true;否则-false.
(3) boolean equals(String str):比较两个字符串内容是否相同,相同-true;否则-false.
注意:开发时,比较字符串内容,需要用 equals方法比较。
(4) int length() : 获取字符串的长度。
注意:获取数组的长度:数组名.length ;
// 思考:如何遍历字符串????
(5) String trim() : 去除字符串前后的空格。
注意:应用场景结合 :将String转换int/Integer时应用
String age = "18 ";
int n = Integer.parseInt(age.trim());
(6) String[] split(String str) : 将当前字符串进行拆分,拆分结果封装为一个String类型的数组。
3. String的不可变性【面试题目】
(1) String的字面值是字面常量,如果在字符串上进行操作,在原有字符串的基础上拷贝一个副文本,在副
文本上完成操作(字符串拼接)。
(2) 由于String具有不可变性,所以在完成字符串拼接时,效率较低。
注意: String s = "a" + "b";
上面的字符串的拼接只创建一个对象。原因:如果+ 两端都为字符串常量时,编译器在编译阶
段将"a"+"b" 直接编译为 "ab",称为编译器可知。
String s = "hello";
for(int i=0;i<s.length();i++){
// 通过下标获取 对应的字符:charAt
char c = s.charAt(i);
System.out.println(c);
}
二、可变长的字符串(位于java.lang包)
1. StringBuffer: JDK1.0版本,线程安全,运行效率慢
StringBuilder: JDK5.0版本,线程不安全,运行效率快。
2. 常用的构造方法:
(1) public StringBuilder() : 无参数的构造方法
(2) public StringBuilder(String str) : 带有字符串类型参数的构造方法
3. 常用功能方法:
StringBuilder append(String str):字符串的拼接
4. 注意:StringBuilder是可变长字符串,所有拼接效率远远高于 String。
面试题目:String 和 StringBuilder、StringBuffer的区别。
解析:
(1) String 是不可变长的字符串,在完成字符串拼接时效率较低。
String线程安全。
(2) StringBuilder是可变长的字符串,在完成字符串拼接时效率较高。
StringBuilder线程不安全。
(3) StringBuffer是可变长的字符串,在完成字符串拼接时效率较高
StringBuffer线程安全。
更多推荐



所有评论(0)