您的位置:首页 > 产品设计 > UI/UE

Java学习笔记之字符串 和 StringBuilder类

2016-05-27 14:47 288 查看
在 Java 中,字符串被作为 String 类型的对象处理。 String 类位于 java.lang 包中。默认情况下,该包被自动导入所有的程序。



字符串的不变形:
String 对象创建后则不能被修改,是不可变的,所谓的修改其实是创建了新的对象,所指向的内存空间不同。



运行结果:



在字符串内部
1、 通过 String s1="爱慕课"; 声明了一个字符串对象, s1 存放了到字符串对象的引用,在内存中的存放引用关系如下图所示:



然后通过 s1="欢迎来到:"+s1; 改变了字符串 s1 ,其实质是创建了新的字符串对象,变量 s1 指向了新创建的字符串对象,如下图所示:



2、 一旦一个字符串在内存中创建,则这个字符串将不可改变。如果需要一个可以改变的字符串,我们可以使用StringBuffer或者StringBuilder。

3、 每次 new 一个字符串就是产生一个新的对象,即便两个字符串的内容相同,使用 ”==” 比较时也为 ”false” ,如果只需比较内容是否相同,应使用 ”equals()” 方法



public class HelloWorld {

    public static void main(String[] args) {
String s1 = "imooc";
String s2 = "imooc";
        
        //定义字符串s3,保存“I love”和s1拼接后的内容
 String s3 = "I love" + s1;

        // 比较字符串s1和s2
// imooc为常量字符串,多次出现时会被编译器优化,只创建一个对象
System.out.println("s1和s2内存地址相同吗?" + (s1 == s2));
        
        //比较字符串s1和s3
System.out.println("s1和s3内存地址相同吗?" +   (s1 == s3)   );

String s4 = "I love " + s1;
         //比较字符串s4和s3
// s1是变量,s4在运行时才知道具体值,所以s3和s4是不同的对象
System.out.println("s3和s4内存地址相同吗?" + (s4 == s3));
}
}

这就是 StringBuilder 和 String 最大的区别。

创建了 StringBuilder 对象,用来存储字符串,
并对其做了追加和插入操作。这些操作修改了 str 对象的值,而没有创建新的对象

String程序运行时会额外创建一个对象。当频繁操作字符串时,就会额外产生很多临时变量。
使用 StringBuilder 或 StringBuffer 就可以避免这个问题。
至于 StringBuilder 和StringBuffer ,它们基本相似,不同之处,StringBuffer 是线程安全的,
而 StringBuilder 则没有实现线程安全功能,所以性能略高。
因此一般情况下,如果需要创建一个内容可变的字符串对象,应优先考虑使用 StringBuilder 类。




Java 中的 StringBuilder 类的常用方法

StringBuilder 类提供了很多方法来操作字符串:



package com.imooc7;
public class ClassStringBuilder {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        //创建StingBuilder对对象,存储字符串
        StringBuilder str = new StringBuilder("hello");
        
        //在字符串后面追加字符串
        str.append("imooc");
        
        //在字符串后面追加整数
        str.append(520);
        System.out.println("字符串长度:" + str.length());
        System.out.println("插入前:" + str);
        
        //在指定位置插入内容
        str.insert(11, "!");
        
        //转化为String对象
        String str2 = str.toString();
        System.out.println("插入后:" + str2);
    }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息