1.String的chatAt
char charAt(int index)
1).返回值是char类型,参数是int。
2).作用和C语言中字符串的下标取值一样,得到的是串中下标为index的字符。
3).下标从0开始,到w.length()-1 , 同C语言中字符串。An index ranges from 0 to length() - 1. (Api中的原话)
public class test { public static void main(String[] args){ String s = new String("Hello world!"); System.out.println(s); int i; for(i = 0; i < s.length(); ++i) System.out.print(s.charAt(i) + " "); } }
//运行结果 Hello world! H e l l o w o r l d !
2.StringBuffer的append(char[] str)
StringBuffer append(char[] str)
Appends the string representation of the char array argument to this sequence.
返回一个StringBuffer 类型。
public class test { public static void main(String[] args){ StringBuffer s = new StringBuffer("Hello"); System.out.println(s); System.out.println(s.append(" world!")); } }
//测试结果 Hellow Hellow world!
3.StringBuilder的append(char[] str)
StringBuilder append(char[] str)
Appends the string representation of the char array
argument to this sequence.
同.StringBuffer的append(char[] str)
public class test { public static void main(String[] args){ StringBuilder s = new StringBuilder("Hello"); System.out.println(s); System.out.println(s.append(" world!")); } }
//测试结果 Hellow Hellow world!2.简述String、StringBuffer、StringBuilder的联系与区别,使用场景
联系:三个都是java平台提供的字符串,都是可以用于存储和 *** 作字符串。
区别:
- String 为字符串常量,StringBuffer与StringBuilder字符串变量,从而效率:String
- StringBuffer是线程安全的,而StringBuilder为非线程安全;
- String 是不可变的对象, 每次对 String 类型进行改变的等同于生成了一个新的 String 对象,经常改变内容的字符串不建议使用 String;
- 对StringBuffer 类改变,每次结果都会对 StringBuffer 对象本身进行 *** 作,而不是生成新的对象,再改变对象引用,经常改变内容的字符串建议使用 StringBuffer ;
- StringBuffer 上的主要 *** 作为 append 和 insert 方法。
使用场景:如果要 *** 作少量的数据用 String
单线程 *** 作字符串缓冲区 下 *** 作大量数据用StringBuilder
多线程 *** 作字符串缓冲区 下 *** 作大量数据 用StringBuffer
实例:
String str = ""; for(int i = 0; i < 10; i++){ str += "a"; }
反编译后代码如下:
String str = ""; for(int i = 0; i < 10; i++) str = (new StringBuilder()).append(str).append("a").toString();
可以看到,反编译后的代码,在for循环中,每次都是new了一个StringBuilder,然后再把String转成StringBuilder,再进行append。而频繁的新建对象当然要耗费很多时间了,不仅仅会耗费时间,频繁的创建对象,还会造成内存资源的浪费。
所以,在循环体内,字符串的连接方式,使用 StringBuilder 的 append 方法进行扩展。而不要使用 "+"。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)