Java学习笔记十七(String、StringBulider、StringBuffer类)

字符串类型有三个主要的类型String、StringBuffer、StringBuilder,今天来简单说一下他们三者的相同与不同。

简单概括一下,对于StringBuffer和StringBuilder来说,String是不可变的字符序列,而它们两个是可变的。其中StringBuffer是线程安全的,速度较慢,StringBuffer是线程不安全的,速度较快。对于使用产生的结果来说这两个类没有区别。

String类

   1、 性质: String对象一旦被创建,内容则固定不变,不可更改。

              String str = "hello";

              str = "helloworld";

            编译器不会报错,但是不代表String引用的对象被改变,因为hello字符串仍然在内存中存在,只是str对象没有指向它,helloworld也在内存中的其他地方存储。

   2、  创建方法:

             (1)String str = "oralce";

             (2)  String str = new String("oralce");

               这两种创建方法的区别是: (1)  这种方法再申请一个str1 = "oralce"时,str和str1会指向同一个oralce

                                                        (2)这种发法则不会指向同一个,是两个不同地址的oralce

   3、 常用方法:

             (1)  int indexOf(char ch)     //查找ch字符在该字符串中第一次出现的位置

             (2)int indexOf(String str)  //查找str字符串...

   4、 字符串连接:

            (1) 字符串 + 字符串 =  字符串

            (2) 字符串 + 其他类型 = 字符串    name + 10 + 20 = xiaoming1020

            (3)   其他类型 + 字符串 = 数字 + 字符串 = 字符串   10 + 4.5 + name = 14.5xiaoming

StringBuffer

    1、 性质: 可变字符序列,类似于String的字符串缓冲区,是线程安全的。

    2、 构造方法:

            (1) public StringBuffer()               //建立一个空缓冲区,初始容量16字节

            (2) public StringBuffer(int length)   //建立一个初始容量为length的缓冲区

            (3) public StringBuffer(String str)    //缓冲区初始内容为str,并提供16字节的初始容量

     3、 与String类型对比:

                   StringBuffer 使用方法都可以改变缓冲区内字符串内容。

                   String 重写了equals方法, StringBuffer没有方法重写。

                   String 可用 + 连接,StringBuffer 不能用 + 连接

StringBuilder

     1、  性质:

                   字符序列,用于单线程,不保证同步,是线程不安全的,但是性能好(常用)。

     2、 常用方法:

              (1)stringBuilderAppend();       //追加内容

              (2)stringBuilderInsert();     

              (3)stringToString();                //将StringBuilder对象转换为String对象

              (4)intLength();           

     3、 区别:

                 String 重写了equals方法, StringBuilder也没有方法重写。

                          

  

猜你喜欢

转载自blog.csdn.net/weixin_40373090/article/details/80637760