一.String 类中常用的方法
1. length()获取字符串长度。
语法: str.length
说明:length() ;方法会返回字符数量,获取字符串长度。(需要注意,字符串的length()方法与数组的length 属性虽然都是获取长度的,但是两者也有不同 ,String 的length()方法是类的成员方法 右括号;数组的length属性是一个数组的属性 没有括号);
2. charAt() 获取指定位置的字符
语法:str.charAt(int index); 说明 str==任意字符串对象 index==char 值的索引下标。
3. indexOf() 获取子字符串索引位置
语法:str.indexOf(substr); str==任意字符串对象。 substr==要搜索的字符或者字符串
注意: indexOf方法返回的是搜索的字符或者字符串 在字符中首次出现的索引位置,如果没有检索到 则返回 -1;
4. startsWith() 判断字符串是否以指定的前缀开始
语法 : str.startsWith(prefix) ; str==任意字符 prefix==作为前缀的字符串。返回值为boolean类型;
5.endsWith() 判断是否以指定的后缀结束
语法: str.endsWith(suffix) ;str==任意字符 suffix==指定的后缀的字符串 。返回值为boolean 类型;
6.tocharArray(); 可以将字符串转换为一个字符数组
语法:str.tocharArray(); str==任意字符串 返回的是一个char 类型的数组
7.contains()判断字符串中是否包含指定的内容
语法:str.contains(String); str==任意字符 String ==查询的字符
8.截取字符串 subString();
语法:subString(beginIndex,endIndex); beginindex==起始下标索引位置 endindex==结束下标索引位置(需要注意 截取是从下标 “0” 开始 起始下标索引位置是包含当前索引 结束下标位置不包含当前索引)
9.字符串替换replace(); 可以将指定字符替换为新的字符
语法:str.replace(oldstr,newstr); oldstr==要被替换的字符串 newstr==替换后的字符串
10.大小写转换
1.toLowerCase();该方法可以将字符串中的所有字符转换为小写。如果字符串中没有应该被转换的字符串,则将原子返回.
2.toUpperCase(); 该方法可以将字符串中的所有字符转换为大写.如果字符串中没u有应该被转换的字符串,则返回原字符串.
11.trim();该方法可以将字符串首尾处的空白内容都删除
语法:str.trim(); str==任意字符串;
12.==和equals的区别 和使用方法;
==号操作符如果用于引用数据类型 ,则是比较连两个两个数据的值是否相等 例如:String sr1="hello" String sr2="hello"; sr1==sr2 (true);
==操作符专门用来比较两个变量的值是否相等,也就是说用户比较变量所对应的内存中所存储的数值是否相等,要比较两个基本数据类型的数据或者两个引用类型的变量是否相等;只能用==操作符;
equals 则是比较两个对立对象的内容是否相等,就好比如去比较两个人的长相是否相同,它比较的两个对象是独立的;
例如:String a=new String("sss"); String b=new String("sss"); a==b 返回(false) a.equals(b) 返回(true);
注意:String a=new String ("sss");这种方式相当于创建了两个对象 一个位于堆内存区中 一个位置字符串常量池当中
这种方式去创建字符串对象时,jvm会首先去检查字符串常量池中是否存在该字符串对象
如果存在,就不会在常量池中创建对象,会在堆内存中创建。并且返回字符常量池的内存地址 而不是堆内存地址
如果不存在 ,会首先在字符串常量池中创建该字符串对象,然后会把字符串常量池的内容拷贝到堆内存中 ,然后返回堆内存地址;
总结:
==:
如果用与基本数据类型,则比较两个变量的值是否相等
如果用于引用数据类型 ,则是比较所指向的对象的地址是否相等(堆内存中的地址)
equals
equals不能用户基本数据类型的变量
如果没有对equals方法进行重写,则比较的是引用数据类型的变量所指向的对象的地址,也是说比较两个引用数据类型所指向的内容是否相等
二:可变字符串 Stringbuffer
1.append() 该方法可以将参数转换为字符串 追加到后面
语法:sbf.append(obj); sbf==任意Stringbuffer对象 obj==任意数据类型的对象
2.setCharAt() 该方法可以给指定的索引处的字符修改为你要替换的字符
语法:sbf.setcharAt(index,ch); sbf==任意Stringbuffer对象 index==被替换字符的索引 ch==被替换的字符
3.insert()该方法可以将字符串插入指定的索引值上
语法:sbf.insert(int offset,String str); sbf==任意Stringbuffer对象 offset==插入的索引下标位置 ,str==插入的字符串
4.delete() 该方法可以删除(移除)指定下标内的数据
语法:sff.delete(start,end); sbf==任意Stringbuffer对象 start==起始索引(包含) end==结束索引(不包含)
5.其他方法 Stringbuffer类中还有类似String类中的方法 比如:indexOf() 获取字符串所在位置索引,length() 获取长度,charAt获取指定索引位置的字符 等等。
三,可变字符串Stringbuffer 和String的区别
共同点:
1.两个类都是字符串缓冲类 2.两个类的方法都是一样的.
不同点:
1.Stringbuffer线程是安全的的,操作效率底,Stringbuillder是非线程安全的,操作效率高。
2.Stringbuffer出现jdk1.0中,Stringfbuillder出现在jdk1.5中;
3.String对象是不可变的对象,当我们每次操作string都会重写新建对象来保存值;
4.Stringbuffer对象的内容可以被改变,Stringbuffer在处理字符串的时候,不产生新的对象,在内存上优先于String类。在实际使用中,如果需要对某一个字符串进行 增删查改 使用Stringbuffer要更加合适。