final class String
1.实例化方式
(1)直接赋值
String str = "Hello World"; //str是一个对象,那么"Hello World" 就应该保存在堆内存中
(2)通过构造方法
String str = new String("Hello World");
System.out.println(str);
2.俩种实例化的区别
(1)直接赋值
(2)构造赋值
3.字符串相等比较
equls与“==”
4.String的匿名对象(未起名的对象)
"hello world".equals(str);
本质上就是将一个匿名的String类对象设置有名字,而且匿名对象一定保 存在堆内存中。
5.字符串常量不可变更
字符串一旦定义不可改变。
所有的语言对于字符串的底层实现,都是字符数组,数组的最大缺陷就是长度固定。在定义字符串常量时,它的内 容不可改变。
String str = "hello" ;
str = str + " world" ;
str += "!!!" ;
System.out.println(str); // hello world!!!
以下为其内存分析图
6.字符与字符串
字符串就是一个字符数组,所以在String类里面支持有字符数组转换为字符串以及字符串变为字符的操作方法。
7.字节与字符串
字节常用于数据传输以及编码转换的处理之中,在String中提供有对字节的支持。
8.字符串比较
上面使用过String类提供的equals()方法,该方法本身是可以进行区分大小写的相等判断。除了这个方法之外, String类还提供有如下的比较操作:
9.字符串查找
10.字符串替换
11.字符串拆分
可以将一个完整的字符串按照指定的分隔符划分为若干个子字符串。
12.字符串截取
13.Stringbuffer类
由于String常量的不可变性,为了方便字符串的修改提供StringBuffer类