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== | 可变       | 不安全     | 最快 | 一个对象                      |