String字符串不是基本数据类型,是对象哦,内存是不可变的,平时我们只是改变变量的引用关系而已。
字符串池的优化:我们的程序中会声明有很多个字符串去存值传值,为了避免相同内容的字符串重复申请了多个而浪费了资源,所以字符串池就把相同的统一引用到字符串池里的一个。
例如:
String s1="aa";
String s2="aa";
s1和s2是引用了字符串池的同一个对象哦。
除非是这样,String s3=new String("aa");才会新构建了对象,另开的内存资源。
-----------------------------------------
//空字符串
String s1 = "";
//没有指向内存
String s2 = null;
-----------------------------------------
String的构造器
可直接传入字符串类型参数,char[]数组类型,byte[]字节数组类型+指定字符集(不指定会按照系统的字符集类型来转码),还能传入StringBuffer类型或者StringBuilder类型。
-----------------------------------------
String的转字节方法:
getBytes();得到字节数组byte[],可以方法的参数指定字符集类型。
如果不给参数,字符集按照系统默认的字符集。
-----------------------------------------
String的常用方法:
length 返回字符串长度
isEmpty 判断是否为空字符串(不是判断null)
trim 去除字符串前后空格
toLowerCase 转小写
toUpperCase() 转大写
split 字符串分离(支持表达式)
toCharArray 把字符串拆分成char数组
-----------------------------------------
indexOf 字符串搜索
搜索不到返回-1
参数有这么4种传法:
int类型 (单个字符搜索)
int类型 int类型 (单个字符搜索并按指定下标开始搜索)
String类型 (字符串搜索)
String类型 String类型 (字符串搜索并按指定下标开始搜索)
-----------------------------------------
lastIndexOf和IndexOf一样的用法,只不过是反过来从后面开始搜索至前面。
-----------------------------------------
截取方法
charAt 指定下标获取字符
substring 指定下标往后获取字符串 或者 传入指定起始下标和结束截取下标
-----------------------------------------
比较方法
startsWith 比较开头字符串与我传进去的字符串是否一致,返回boolean类型
endsWith 比较结尾字符串与我传进去的字符串是否一致,返回boolean类型
equals 比较两个字符串是否一致
equalsIgnoreCase 不分大小写的比较两个字符串是否一致
-----------------------------------------
替换方法
replace 单个字符替换或者字符串替换
replaceAll 正则表达式替换方案