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

可变长的字符串,完成字符串拼接时效率较高,线程不安全并发效率较高