美文网首页
思考java中的string问题

思考java中的string问题

作者: 悟剑声 | 来源:发表于2016-08-14 01:19 被阅读31次

    String类基本描述

    • 有三个final类型的基本量

        private final char value[];
        private final int offset;
        private final int count;
      
    • intern()方法

        返回一个字符串对象的引用
      

    String类的实例化

    • 赋值

        String A = "a";
        System.out.println(A == A.intern()); //true
      
    • 无参数

        String A = new String();
        System.out.println(A == A.intern()); //false
      
    • char[]转String

    • byte[]转String

    • int[]转String

    • String转String

        String A = new String("a"); 
        System.out.println(A == A.intern()); //false
        //String X = "a"; String A = new String(A);
        //或String X = "a"; String A = new String("a");
        //System.out.println(X == A.intern());//true
      
    • StringBuffer转String

        String X = "a"; 
        StringBuffer A = new StringBuffer(X);
        System.out.println(X == A.intern());//true
      
    • StringBuilder转String

        同StringBuffer
      

    String,StringBuffer和StringBuilder的差异

    1. String:内存不可变对象
    2. StringBuffer:相比String,操作字符串时,不需要产生新对象
    3. StringBuilder:与StringBuffer少了synchronized,多线程时数据不安全,单线程下,运行速度优于StringBuffer

    总结

    1. 少量的数据,用String
    2. 单线程操作字符串缓冲区下操作大量数据,用StringBuilder
    3. 多线程操作字符串缓冲区下操作大量数据,用StringBuffer

    字符串操作

    源码阅读

    • 解压jdk下src.zip,可以查看标准库源码
    • 反编译,查看常量池,理解内存布局

    相关文章

      网友评论

          本文标题:思考java中的string问题

          本文链接:https://www.haomeiwen.com/subject/jfjysttx.html