String
-
新建对象
-
常量池
String str="x";
-
新堆
Stirng str=new String("x");
-
区别
常量池创建是在现有堆中查找是否有相同的内容,如果有指向同一数据;新堆中创建则忽略
-
先在常量池中创建再在新堆中创建,指向的内容不相等;先在新堆中创建,再在常量池中查找(此时的常量池就是刚创建的新堆)指向的内容相同;
String str1="x"; String str2=new String("x"); syso(str1==str2);//输出flase;
String str1=new String("x"); String str2="x"; syso(str1==str2);//输出true;
-
常量池中创建是在一个堆中,而新堆创建是在两个堆中
String str1="x"; String str2="x"; syso(str1==str2);//输出true;
String str1=new String("x"); String str2=new String("x"); syso(str1==str2);//输出flase
-
-
-
相关方法
-
检索str的位置
没有检索到返回
-1
;-
检索第一次出现str的位置:
int x = indexOf(str);
-
检索从n开始出现str的位置:
int x = indexOf(str);
-
检索最后一次出现str的位置;
int x = LastIndexOf(str);
-
-
获取指定位置字符串
-
获取从n1到n2的字符串
String str = str.substring(n1,n2);
-
获取从n开始到结尾的字符串
String str = str.substring(n);
-
获取位置n上的字符串
String str = str.charAt();
-
-
去除字符串前后的空字符串
String str = str.trim();
-
查询是否存在
-
以str2开头的字符串
boolean b = str.startsWith(str2);
-
以str2结尾的字符串
boolean b = str.endsWidth(str2);
-
-
正则表达式方法
-
是否存在正则表达式相配数据
boolean b = str.matches(“正则表达式”);//true:相同
-
将一个字符串拆分成字符串数组
String[] b = str.split(正则表达式);
-
将字符串的一部分用于替换
String b = str.replaceAll(正则表达式,被替换);
-
-
-
StringBuffer/Builder
-
String是不可变的(被final修饰);
String str="1"; str=str+"2";
-