一、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",称为编译器可知。
二、可变长的字符串(位于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 StringBuilderStringBuffer的区别。
解析:
(1) String 是不可变长的字符串,在完成字符串拼接时效率较低。
String线程安全。
(2) StringBuilder是可变长的字符串,在完成字符串拼接时效率较高。
StringBuilder线程不安全。
(3) StringBuffer是可变长的字符串,在完成字符串拼接时效率较高
StringBuffer线程安全。
三、BigDecimal类【了解】
1. BigDecimal类:位于java.math 包中
2. 作用:精确的表示、计算浮点数
3. 常用的构造方法:
public BigDecimal(String n) : 带有字符串类型构造方法
4. 常用的方法:
(1) BigDecimal r1 = bd1.add(bd2); // 加法 bd1 + bd2
(2) BigDecimal r2 = bd1.subtract(bd2); // 减法 : bd1 - bd2
(3) BigDecimal r3 = bd1.multiply(bd2); // 乘法 : bd1*bd2
(4) BigDecimal r4 = bd1.divide(bd2,2,BigDecimal.ROUND_HALF_UP); // 除法: bd1/bd2
参数说明:
第一个参数:分母数据
第二个参数:指定保留到小数点后几位
第三个参数:取舍模式,通常采用四舍五入(BigDecimal.ROUND_HALF_UP)

更多推荐