String类的继承关系
final 约束的是不可以指向新的地址空间,但是单个值变化还是可以的
课堂练习
public String intern() 方法返回的是常量池的地址(对象)
仔细理解String类的内存分配:
总结
String s1 = "a";
String s2 = new String("a");
两种方式分配内存的方式不同,常量池和(堆与否)。
另,注意String引用类下,== 和 equals 的区别
字符串对象特性
如上图,一共创建了三个对象。
要注意区分
c = a + b; c = "a" + "b";
的区别
重要规则
常量相加,看的是池,变量相加,看的是堆。
请尽量看源码学习
P471,没看懂,遂放弃。
String类常用方法
下面表示从索引 0 开始截取,截取到索引 5-1 的位置(区间前闭后开)
indexof也可以后跟字符串,返回第一次出现字符串的第一个字符的索引。
replace函数返回的结果才是替换的内容,而其调用方是不会被改变的,对比大小写转换函数的功能。
split后,分割的逗号就没有了。
注意\案例下转义字符的用法:特殊字符需要加入转义符,实际是转义符+特殊字符''+转义符+特殊字符''
该函数具体可以看源码,很好懂。
\
format: 占位符:由后面变量来替换
public static void main(String[] args) {
String name = "wxr";
double score = 98.8/3;
int age = 10;
char gender = '女';
String formatStr = "我的名字%s,是年龄%d,是成绩%.2f,是性别%c,是希望大家喜欢我";
//该编码方式下不分中英文char一律占位2字符。
String info = String.format
(formatStr,name,age,score,gender);
}
标签:13,String,常用,转义,索引,字符串,特殊字符,常量
From: https://www.cnblogs.com/gknives/p/18416800