String:

字符串是常量,创建之后不可改变

字符串字面值存储在字符池中,可以共享

举例:

String s = “Hello”;产生一个对象,字符串池中存储

String  s = new String("Hello");产生两个对象,堆,池各存储一个

String的常用方法:

String s = "Hello";

1.public  char charAt(int index):根据下标获取字符
s.charAt(1);结果为“e”

2.public boolean contains(Strng str);判断当前字符串中是否包含str
s.comtains("Hel");结果为true  s.comtains("Ho");结果为flase

3.public char[] tocharArray();将字符串转化为字符数组并返回
char[] chs = s.tocharArray();

4.public int indexOf(String str);查找str首次出现的下标,存在,则返回下标;不存在,则返回-1;
indexOf(int ch)                                        s.indexOf('H')结果为0
indexOf(int ch,int fromIndex)               s.indexOf('l',3)结果为1 
indexOf(Strnig str,                                s.indexOf("el")结果为1
indexOf(Strnig str,int fromIndex)         s.index("lo", 0)结果为3

5.public int lostIndexOf(String str)查找字符串最后一次出现的下标索引(比较?indexOf())

6.public int length()返回字符串的长度

7.public String trim()去掉字符串前后的空格

8.public String toUpper(asel);将小写转化为大写

9.public String toLower(asel);将大写转化为小写

10.对象名.equalsIgnorelase(另一对象)不论大小写,两者进行比较

11.public boolean endWith(String str)判断字符串是否以str结尾

12.public boolean startWith(String str)判断字符串是否以str为前缀

13public String relaace(char oldChar , char newChar)将旧字符串替换成新字符串返回
s.replace('e' , '123')
s.replace('e' , "222")

14.public String[] split(String str)根据str将字符拆分成数组,元素多少根据拆分的数量,拆分后str将消失

15.public String subString(int beginIndex)根据输入的值作为截取返回新字符串(从输入的值开始)

16.public boolean isEmpty()字符串数组长度为零时返回true,表示为空串

StringBuffer:

可变长字符串,JDK1.0提供,运行效率满、线路安全

StringBuilder:

可变长字符串,JDK5.0提供,运行效率快、线路不安全

String  、StringBuilder、String

保存在池中的条件:1.直接声明,2.首次出现

 

inter方法:

String s1= "abc";                 //(保存在池中)
String s2 = s1 + "def";
                                            //会自动运行StringBuilder会在堆中建一个新的stringBuilder对象,进行拼接,最后通过toString()方法返回一个new String                                                 () 对象给s2(保存在堆中)
s2.inter();                             //过s2.inter();在池中创建一个为“abcdef”的字符串(池中没有创建过“abcdef”)
String s3 = "abcdef";          //复用s2保存在池中的地址
s2 == s3 true

   

 

String s1= "abc";                    //(保存在池中)
String s2 = s1 + "def";
                                               //会自动运行StringBuilder会在堆中建一个新的stringBuilder对象,进行拼接,最后通过toString()方法返回一个new String                                                   () 对象给s2(保存在堆中)
String s3 = "abcdef";             //在池中创建一个新的“abcdef”;
/*s2.inter();                                //池中已经有一个“abcdef”的地址,所以不能创建,但是会返回一个名为“abcdef”的地址,需要赋值给新的变量。
s2 == s3  flase*/
String s4 = s2.inter();
s3 == s4;    true

 

  • 版权声明:文章来源于网络采集,版权归原创者所有,均已注明来源,如未注明可能来源未知,如有侵权请联系管理员删除。

发表回复

后才能评论