1.字符串常量,string类
值不可变,被final修饰。
String s = “abc”;
s = “bcd”;
这两段代码并没有修改abc的值,而是在常量池中又开辟了一块空间,值是bcd,栈中的s指向bcd。
1.1加密
1. byte[] bytes = str.getBytes();可以将字符串转化为指定编码格式下的编码。
2.Arrays.toString()可以将数组打印出来,如果数组直接sout,输出的是地址值。
1.2 String与字符数组
String s = "abc";
char[] chars = s.toCharArrry();//将字符串转换成字符数组;
String str =new String(chars);//将字符数组产换成字符串(String的有参构造);
1.3分割
split();方法将字符串分割成字符串数组;有两个参数第一个是要以哪个字串分割,第二个是限定,
limit=0;//自动过滤末尾的空格,“abckjhabc”,以abc分割后成{ ,kjh};
0<limit<=len,len就是所分割成的数组的元素个数。
limit<0,分割最多次。
这个可以统计指定子字符串在字符串中出现的次数。
String str = "abchhhhabchdgfgabcabc";
String[] array = str.split("abc",-2);
System.out.println(array.length-1);
对str进行最多次分割,所分割的数组元素个数刚好是指定子字符串的数量加一,故array.length-1就是出现次数。
1.4检索
charAt()方法,返回值是char;参数是int类型 表示字符串对应的索引(范围是0-length)
如:打印出字符串的每个字符;
int len = str.length();
for(int i= 0;i<len;i++)
{
char c = str.charAt(i);
system.out.println(c);
}
1.5 indexof()和lastIndexof()
indexof()返回值是int 形参是 指定字符串,开始查找的索引(int);//找出指定字符串第一次出现的位置
lastindexof()//找出指定字符串最后一次出现的位置
1.6 截取
substring();返回值类型是String,形参是开始截取位置的索引,结束位置的索引(包头不包尾)
一般截取都会结合这indexof()和lastIdexof()方法使用。
1.7 不加大小写区分的比较
String s = "abc";
s.equalsIgnoreCase("Abc");//这个方法是不区分大小写对字符串进行比较,返回值是布尔型。
1.8 替换
s.replaceAll()//两个参数 要替换的字符串,用哪个字符串替换。返回值是新的字符串。这个是把所有字符串中所有的符合条件的字串全部替换。
s.replace()//两个参数 要替换的字符,用哪个字符替换,返回值是新的字符串。这也是把所有符合条件的字符全部替换。
2.字符串变量
StringBuffer和StringBuilder.最常用的的方法append()方法,作用是往变量后面继续拼接字符串。
> 这两个类的方法一模一样
| | 值是否可变 | 线程安全 | 效率 | 内存(拼接) |
| ----------------- | ---------- | ---------- | ---- | ----------------------------- |
| String | 不可变 | 安全 | 一般 | 产生很多新对象 占据很多堆内存 |
| StringBuffer | 可变 | 安全(同步) | 最慢 | 一个对象 |
| ==StringBuilder== | 可变 | 不安全 | 最快 | 一个对象 |