字符串 String 类

一.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要更加合适。

你可能感兴趣的:(字符串 String 类)