java中的String类

来源:互联网 发布:在线翻译软件 编辑:程序博客网 时间:2024/06/02 15:47
    String 类是java.lang 包下的类,是 java 中非常重要的 API,final 修饰的,因此该类不能被继承。String 是不可变对象,即字符串一旦创建便不可改变。非要改变则一定创建新的字符串,但是字符串的引用可以重新赋值。String 类是采用 Unicode 编码,一个字符都占用2个字节(不管是中文还是英文)

1.String 常量池

    由于字符串是不可变对象,java 为了提高性能,在创建静态字符串(常量、字面量)时会先从字符串常量池中去查找,如果已经存在则引用直接指向该字符串在内存中的地址,若不存在则才会创建该静态字符串,并且将该字符串放到常量池中。    比如:    String s1="hello";    String s2="hello";    System.out.println(s1==s2)//true;    String s3=new String("hello")    System.out.println(ss2==s3)//false;从上面的代码中可以看出,s1\s2 都是字面量,而且s2 用了s1 所指向的对象。由于s3 是强制创建的,所以没有从常量池中重用字符串 “hello” 。

2.String 中的API

    String s4="thinking in java ";    s4.toUpperCase();    s4.toLowerCase();    s4.indexOf("in");    s4.substring(3,6);//注意含头不含尾,起始下标从0开始    s4.trim();//去除字符串的空白部分    s4.charAt(3);//获取指定位置的字符    s4.startsWith("thi");    s4.endsWith("a");    String.valueOf(false);//静态方法可以将其他类型转换成字符串    String.valueOf(122);    String.valueOf("12.2");

3.StringBuilder

    由于String 提供的方法只能获取字符串的相关信息,不能对字符串的内容进行操作,所以java提供了 StringBuilder 类,该类提供了一些对字符串内容进行操作的方法,是可变对象,StringBuilder 是非线程安全的,所以运行性能较高。    StringBuilder sb=new StringBuilder(s4);    sb.append("abc");    sb.insert(2,"abc");//在下标为2的位置插入给定字符串    sb.delete(2,4);    sb.replace(2,4,"ABC");    sb.reverse();

4.StringBuffer

    StringBuffer 是线程安全的,同步处理,性能稍慢;    StringBuilder 是非线程安全的,并发处理,性能稍快。
0 0