1.String类描述
理解: String类是一个字符串常量,它们的值在创建后不能被更改。
位置: Java.long包中
特点:
1> String类中的数据是不可变的,如果需要改变则需要重新创建新的String对象。
2> 字符串缓冲区支持可变的字符串
3> String类为final类修饰,则不能被继承
4> 字符串字面值(” “)存储在一个特殊的空间里(JDK6持久带,JDK7后存储在元空间,持久带或元空间里的数据不会被销毁,主要存储的数据都具备一定的复用性)
5> new String(" ")会产生两个字符串对象,一个堆空间由引用指向,一个在元空间存储字面值。
2.String类获取字符串的方式
1> String str1="hello"
描述: 直接使用” “方式获取字符串直接在串池中查看是否有需要的字符串对象,如果串池有,则直接使用;若没有需要在串池中产生一个字符串对象,串池中的字符串对象可以被共享使用
2>String str2 = new String("hello");
描述: 利用构造方法获取字符串,首先在堆空间创建一个字符串对象,然后查看串池中是否存在字符串对象,若存在,串池中就不再创建字符串对象,若没有,串池中需要在创建一个字符串对象用于共享,这种获取字符串的方式产生1~2个字符串对象
练习:
String str1="hello";
String str2 = new String("hello");
System.out.println(str1);
System.out.println(str2);
String str3="hello";
System.out.println(str1==str3);
System.out.println(str2==str3);
//结果hello
hello
true //str1和str3实在线程池创建,地址相同,为true
false //str2在堆空间里创建,两者地址不同,为false
字符串底层本质是:char类型的数组,应用层操作
字符串低层实际上操作的为数组,字符串也有下标,下标范围:0~字符串长度-1
3.字符串的常用方法
返回类型 | 方法名 | 作用 | 注意 |
int | length() | 获取字符串的长度 | 数组获取长度:数组名.length |
char | charAt(int index) | 根据下标获取队形的字符 | 如果指定的下标超过字符串的下标范围,则运行报错 |
boolea | contains(String str) | 判断当前字符串中是否包含子串str,包含为true,不包含为false | |
boolean | equals(String str) | 判断字符串内容是否相同(区分大小写),相等为true,不相等为false | 实际开发字符串判断内容是否相等,用于equals |
boolean | equalsIgnoreCase(String str) | 判断字符串内容是否相同(不区分大小写),相等为true,不相等为false | 实际开发多用于验证码判断 |
String | toUpperCase() | 小写转大写 | |
String | toLowerCase() | 大写转小写 | |
int | indexOf(String str) | 获取str当前字符串第一次出现首字符下标,如果没有出现过,则返回-1 | |
boolean | endsWith(String str) | 判断当前字符串是否以str结尾 | |
boolean | startsWith(String str) | 判断当前字符串是否以str开头 | |
String | substring(int startIndex,int endIndex) | 从当前字符串截取一个子窜,从startIndex小标开始,到endindex-1下标结束。(左闭有开) | |
String | time() | 取出当前字符串的空格 | |
String[] | split(String str) | 将当前字符串以str做拆分,拆分的结果封装在String 类型的数组中 |
4.String不可变性
(1)String字符串为字面值常量,一旦创建不能更改,如果要对字符串进行拼接,会在原字符串的基础上拷贝一个父文本,在父文本完成字符串的拼接
(2)由于String不可变性,完成字符串拼接时,相对效率较低
5.可变长的字符串
(1). 常用的可变字符串:位于java.long包中
StringBuffer: jdk1.0版本,线程安全,并发效率低
StringBuilder: jdb5.0版本,线程不安全,并发效率高
(2). 常见的构造方法
StringBuilder(): 无参数的构造方法
Stringbuilder(String str): 以String类型的字符串创建一个边长的字符串
(3). 常见的功能方法:字符串的拼接:
StringBuilder append(参数): 完成字符串的拼接
6.简述String,StringBuffer,StringBuilder的区别
描述 | |
String | 不可变长的字符串,字符串拼接时,效率相对较低 |
StringBeffer | 可变长的字符串,完成字符串拼接时效率相对较高,线程安全并发效率较低 |
StringBuilder | 可变长的字符串,完成字符串拼接时效率较高,线程不安全并发效率较高 |