JAVA字符串

来源:互联网 发布:手机淘宝买家秀在哪里 编辑:程序博客网 时间:2024/05/22 00:36

String在JAVA 内部是用 private final char value[]实现。

JAVA生成一个字符串方式有:

(1)String a = "ab";

(2)String b = new String("ab");

JAVA中为了提高运行效率,字符串虽然是对象,不过认为是常量,存储在class文件中,Constant Pool区域中。他是在内存的方法区中存储。内存为空的字符串也会在Constant Pool区域中建立一个长度为0内容为空的字符串。

      对于(1)来说字符串在编译期创建

      对于(2)来说字符串在运行期创

       (2)可以通过String.intern()方法,将存储在堆中的字符串变量添加到String pool中。


String 的比较:

        == 是比较地址  equal 是比较内容

举例:

       String s1 = "hello";

       String s2 = "hello";

       String s3 = new String("hello");


      s1 == s2 都指向字符串常量,存储在常量池里。

      s1!=  s3

      s1.equal(s3)   -->  true  内容相同。

      下面看intern的用法。

       s3.intern()   将s3内容加入到常量池中,但是常量池中已有同样的内容。则不在新建。

       s1==s3

    

 StringBuffer会在一开始就默认声明一个固定大小的char数组,值为16。在编译期间能确定字符串大小情况下,使用"+"效率更高。

StringBuffer是为了解决String不可变性提出。

例题:

String A,B,C;A = "a";B = "b";A = A + B;StringBuffer D = new StringBuffer("abc");D = D.append("567");
上述共创建了多少对象?

         A aa ;aa叫做引用变量,不是对象。对象是通过new创建的。所以题目中D只是一个引用变量,不是对象。而字符串"abc"是对象。

StringBuffer D = new StringBuffer("abc")创建了两个变量,一个是StringBuffer,一个是"abc"。D是引用变量指向了StringBuffer对象。

0 0
原创粉丝点击