说来这String字符串也是运用广泛了,但是String的一些使用方法你是否能够了解清楚呢?
这是我这几天来整理的String笔记,其实这也是不全面的,要想深入了解,还得自己去oracle官网看JDK_API
1.我们要先了解在内存区中是如何保存字符串的.
如果创建字符串没有通过new对象的方式创建,name字符串是保存在字符串常量池(常量区),当你需要给一个字符串变量赋值的时候,先到常量池中查找,如果没有就在常量池中创建一个,并将地址赋值给字符串变量,如果有就不在创建,直接将地址给变量.
如果是new的对象字符串也是保存在字符串常量池(常量区),当你需要给一个字符串变量赋值的时候,先到字符串常量池中查找,
如果没有就在常量池创建一个,将值赋给堆中的对象,如果有就不创建,将值赋值给堆区中的对象
2.字符串的一些常用方法:
StringBuffer: 字符串缓存区 : 存在一个字符数组 默认会有一个大小 :16 ,如果超了就容器大小就翻一倍。* 类似oc中的可变字符串。 */
StringBuffer :存字符的容器
容器的功能 :
增加
append(); //在字符串的后面追加
insert(); //插入一个字符串。
删除
delete(int start, int end) // 删除某一段字符串。
deleteCharAt(int index) // 删除指定位置的字符串
修改
replace(int start, int end, String str) 根据指定 的开始与结束索引值替代成指定的内容。
reverse() 翻转字符串缓冲类的内容。 abc--->cba
setCharAt(int index, char ch) 把指定索引值的字符替换指定的字符。
substring(int start, int end) 根据指定的索引值截取子串。
ensureCapacity(int minimumCapacity) 指定StringBuffer内部的字符数组长度的。
查找
indexOf(String str, int fromIndex) 查找指定的字符串第一次出现的索引值,并且指定开始查找的位置。
lastIndexOf(String str)
capacity() 查看当前字符数组的长度。
length()
charAt(int index)
toString() 把字符串缓冲类的内容转成字符串返回。
1.先简单的使用一下StringBuffer
StringBuffer str = new StringBuffer();
-------------添加字符串的方法---------------------
str.append("字符串");
str.append("java"); //字符串的追加
插入字符串
offset:从某一个位置开始插入
str : 插入的数据类型
str.insert(3, "php");
System.out.println(str);
------------删除数据----------------
delete(int start, int end) // 删除某一段字符串。
deleteCharAt(int index) // 删除指定位置的字符串
str.delete(3, 4); //包含起始位置 但是不包含结束位置
System.out.println(str);
删除指定位置的字符串
str.deleteCharAt(0);
System.out.println(str);
------------修改的方法-------------------
start:起始位置
end : 结束的位置
str : 替换的字符串
符串hpjava
str.replace(4, str.length(), "OC");
System.out.println(str);
翻转字符串
str.reverse();
System.out.println(str);
替换指定位置的字符
index :指定的位置
ch :替换的字符
COph串符
str.setCharAt(0, 'O');
System.out.println(str);
截取字符串
str.substring(start); // 从某个位置开始截取
str.substring(start, end)//截取某一段字符串
-------------查找:
str.indexOf(str);// 查找指定的字符串在大的字符串中的位置。
indexOf(String str, int fromIndex) //从指定的位置开始找。
str.lastIndexOf(str) 查找最后一个
str.lastIndexOf(str, fromIndex)//从指定的位置开始找
查看字符数组的长度
str.length();
str.capacity();
str.toString(); // 将String变为String
str.charAt(index); 查找指定位置的字符
StringBulider 和StringBulider的使用方式是一模一样
StringBuffer 和 StringBulider 区别:
相同点 :
1.都是字符缓冲类
2.两个类的方法一样
不同点:
1.StringBuffer线程更安全,操作效率低,StringBulider 线程不安全,效率高。
2.StringBuffer是jdk1.0就有的,StringBuliderjdk1.5才有。
推荐使用:StringBulider