上次说到String类的一些特性和在内存中的情况。这篇文章主要从方法功能入手,讲一讲String类的应用,还有一些Stringbuffer和Stringbuilder的区别及应用。废话不多说,进入正题。
关于对数据的基本操作,无非就是:1.增添 2.删除 3.修改 4.查看
1.查看:
1.1查看长度:int length() //返回该字符串长度
1.2根据位置查看字符 :char charAt (int index) //参数是位置下标 (注意从零计数)
1.3根据字符查看位置 :int indexOf (int ch ) //注意,这里的字符参数竟然是int类型,实际上他是该字符的ASCII码
而且返回值是第一次出现该字符的位置。如果找不到,则返回-1.
1.4根据字符查看位置 : int indexOf(int ch ,int fromindex) // 功能:从指定位置开始索引目标字符,并返回其位置。
参数: ch 是被进行索引的目标字符, fromindex是指定的位置。如果找不到,则返回-1.
1.5 根据字符串查看位置:int indexOf (String s) //功能:索引目标字符串,并返回其第一个匹配字符的位置。 若不存在该字符串,则返回-1.
1.6根据字符串查看位置:int indexOf (String s, int fromindex) //功能:从指定位置开始索引目标字符串,并返回其第一个匹配字符的位置。 若不存在该字符串,则返回-1.
1.7 ... int lastIndexOf(int ch , int fromindex ) ... int lastIndexOf (int ch) ... // 从字符串尾部倒着索引,功能和上述一致。
1.8根据位置查看字符串 String subString(int begin , int end)//功能:根据起始位置和结束位置,从元字符串中提取子字符串,需要注意的是 end 表示不想提取字符的终点,所以end位置字符不会被提取。子串lenth = end - begin
2.修改
2.1将字符串转化为字符数组:char[] toCharArray ( String s )
2.2将字符串按需分割: String[] split (String s); 以s为分割位,将字符串分割成string[]数组
2.3将字符串转换为大小写: String toUpperCase()/大写...... String toLowerCase()/小写
2.4将字符串链接: String concat(String s) //连接到末尾,
2.5将字符串内容替换: String replace(String Olds , String News)//将所有Olds用News替换。同理参数可以换为char
2.6将字符串前后两端的空格去掉:String trim()
StringBuffer 与 StringBuilder 及String 区别及应用:
放个大,直接上代码Demo
String a = new String("hello"); //length()方法 System.out.println("长度:"+a.length()); 长度:5 //charAt(index) System.out.println("返回第四个元素:"+a.charAt(4)); 返回第四个元素:o //boolean endWith(String other) System.out.println("是否是以llo结尾:"+a.endsWith("llo")); 是否是以llo结尾:true //boolean equals(object other)...注意此处的参数类型是Object System.out.println("是否对象内容相同:"+a.equals("hello")); 是否对象内容相同:true //补充: equalsIgnoreCase(String other) 忽略大小写进行内容比较 // int indexof(String this) System.out.println("返回ll的位置:"+a.indexOf("ll")); 返回ll的位置:2 //String substring(int beginIndex,int endIndex),可以这样理解endIndex:最末端不想要的代码点,不要理解为终点 System.out.println("返回从1到3的字符串:"+a.substring(1, 3)); 返回从1到3的字符串:el //String toUpperCase()...String toLowerCase()...转换大小写 StringBuffer sb = new StringBuffer("hello"); // StringBuffer append(char c) System.out.println("加上一个字符:"+sb.append(' ')); 加上一个字符:hello // StringBuffer append(String other) System.out.println("加上一串字符串:"+sb.append(" world!")); 加上一串字符串:hello world! //StringBuffer insert(int index, String other) 在某处前面插上某字符串 System.out.println(sb.insert(0, "吊带:")); 吊带:hello world! //String toString StringBuffer类型转换成String类型 //"xxx"... new String("xxx")... new StringBuffer("xxx").toString 三者地址比较 System.out.println(("xxx")==new String("xxx")); //False System.out.println("xxx"==new StringBuffer("xxx").toString()); //False System.out.println(new String("xxx")==new StringBuffer("xxx").toString()); //False System.out.println(new StringBuffer("xxx").toString()==new StringBuffer("xxx").toString()); //False
区别:StringBuffer是线程安全的,因为他的方法是含有synchronized同步关键字,但是安全的同时,会降低效率。
显然啦,StringBuilder是不安全的,但是效率灰常高。
<至于两者的深入区别,我还得继续研究一下,争取下次为他俩写一篇专门的API博客>
同志们,有补充的提醒我一下,互相帮助,共同进步啦啦啦~