天天看点

String类

java.lang.string类的使用

1.概述

string:字符串,使用一对""引起来表示。 1.string声明为final的,不可被继承 2.string实现了serializable接口:表示字符串是支持序列化的。 实现了comparable接口:表示string可以比较大小 3.string内部定义了final char[] value用于存储字符串数据 4.通过字面量的方式(区别于new给一个字符串赋值,此时的字符串值声明在字符串常量池中)。 5.字符串常量池中是不会存储相同内容(使用string类的equals()比较,返回true)的字符串的。

2.string的不可变性

2.1 说明

1.当对字符串重新赋值时,需要重写指定内存区域赋值,不能使用原有的value进行赋值。 2.当对现的字符串进行连接操作时,也需要重新指定内存区域赋值,不能使用原有的value进行赋值。 3.当调用string的replace()方法修改指定字符或字符串时,也需要重新指定内存区域赋值,不能使用原有的value进行赋值。 2.2 代码举例

2.3 图示

String类

3.string实例化的不同方式

3.1 方式说明

方式一:通过字面量定义的方式

方式二:通过new + 构造器的方式

3.2 代码举例

3.3 面试题

string s = new string("abc");方式创建对象,在内存中创建了几个对象?

两个:一个是堆空间中new结构,另一个是char[]对应的常量池中的数据:"abc"

3.4 图示

String类

字符串拼接方式赋值的对比

4.1 说明

1.常量与常量的拼接结果在常量池。且常量池中不会存在相同内容的常量。

2.只要其中一个是变量,结果就在堆中。

3.如果拼接的结果调用intern()方法,返回值就在常量池中

4.2 代码举例

5.常用方法:

注:indexof和lastindexof方法如果未找到都是返回-1

替换:

匹配:

切片: