Rumah >Java >javaTutorial >重拾java基础(十三):String姐妹StringBuffer、StringBuilder总结

重拾java基础(十三):String姐妹StringBuffer、StringBuilder总结

黄舟
黄舟asal
2017-01-16 10:08:211141semak imbas

重拾java基础(十三):String姐妹StringBuffer、StringBuilder总结

一、StringBuffer类概述

  1. buffer:缓冲

2.  字符串缓冲区,跟String非常相似,都是用来存字符串数据的

3. String类和StringBuffer类中都有一个char数组,它就是缓冲区       String类的这个缓冲区我们是不能进行操作,而StringBuffer类的这个缓冲区可以控制它的长度

4. java.lang包

5. 缓冲区不够用时可以自动增长

二、构造方法

public StringBuffer(),无参构造方法,构造一个空的字符串缓冲区,初始容量为16个字符
public StringBuffer(int capacity),构造一个指定容量的空的字符串缓冲区
public StringBuffer(String str),使用一个字符串作为初始内容来构造一个字符串缓冲区,并在后面预留16个字符的空缓冲区
1. StringBuffer sb="hello";   不行
2. StringBuffer sb=new StringBuffer("hello");   
sb+"world";   不行

三、功能方法

public StringBuffer append(任意类型 o),把任意类型数据的字符串表达形式追加到缓冲区的最后(例如:如果是对象,追加的是其toString方法的返回值)
public StringBuffer insert(int offset,任意类型 o),把任意类型的字符串表达形式插入到缓冲区指定位置
public int capacity(),获得字符串缓冲区的当前容量
public int length(),获得字符串缓冲区内字符串的长度
public StringBuffer delete(int start,int end),删除缓冲区指定起始位置的字符串
public StringBuffer deleteCharAt(int index),删除缓冲指定位置的字符
public StringBuffer replace(int start,int end,String str),把缓冲区指定位置的字符串替换为新的字符串
public StringBuffer reverse(),字符串反转(倒)
public String toString(),把StringBuffer转换为String类型

四、String和StringBuffer的区别

1. StringBuffer sb="hello";   不行
2. StringBuffer sb=new StringBuffer("hello");   sb+"world";   不行
3. String对象是不可变的,StringBuffer对象是可变的(画内存分配图)
4. StringBuffer保证线程安全(数据同步),String不保证线程安全(数据不同步)

五、StringBuilder类

  1. 它跟StringBuffer一样,两个类兼容的

2. 该类不保证线程安全

3. 在不考虑多线程的情况下,字符串三姐妹的效率:StringBuilder类 > StringBuffer类 > String类如果连接字符串常量,使用字符串的“+”效率更高;如果连接字符串变量,使用StringBuffer的append方法效率更高

六、包装类

  1. Java有8大基本数据类型:byte、short、int、long;float、double;char、boolean

2. String s="100";     String s="99.999" ;

3. Java提供了基本数据类型对应的引用数据类型:Byte、Character、Short、Integer、Long、Float、Double、Boolean

4. 不管是引用数据类型还是基本数据类型,他们的作用都是一样的。差别主要是:引用类型里面可以提供方法,基本数据类型不行

5. 基本数据类型对应的引用数据类型叫包装类

6. 包装类的用法   Integer i=new Integer(100);  //装箱    //int i=100;   Integer j=100;   //自动装箱(JDK5以后)   System.out.println(i.intValue()+100);   //拆箱   System.out.println(i+100);   //自动拆箱(JDK5以后)

七、包装类的主要作用

这些类中提供了一下功能方法,可以实现把String类型的数据转换成包装类或基本数据类型1.String和包装类之间互相转换  a.包装类转换为String    Integer i=100;   i+""   toString()  b.String转换为包装类    valueOf:该方法在哪个类,那么它的作用就是把其他类型转换成它所在的这个类2.String和基本数据类型之间的互相转换  a.基本数据类型转换为String  +""    b.String转换为基本数据类型    

八、正则表达式

  1. 程序需要对客户录入的数据进行校验

2. 正则表达式的作用就是对数据进行校验(针对格式)

3. 示例:郑州市固定电话(0371-56061160-223)    区号固定为0371       电话号码固定8位,不能以0开头    分机号可有可无,1-3位    都是数字    中间用“-”分割

4. String zz_phone="0371-[1-9]//d{7}(-//d{1,3})?"; 

5. 正则表达式是以字符串的形式存在的

6. 正则表达式就是由一堆特殊的符号组成的,用来描述或表达某种数据的格式的

九、怎么写正则表达式

1.先写固定不变的2.然后分块写,每块都是先指定类型后指定个数

十、怎么用正则表达式进行数据校验

1.String类的public boolean matches(String regex){}String email="601141632@qq.com";String email_regex=".+@//w+//.[a-z]{2,}";email.matches(email_regex);
2.java.util.regex包中有个Pattern类public static matches(String regex,String input){}

十一、

  1. String类的split方法支持正则表达式

2.String类的replace方法不支持正则表达式,replaceAll支持正则表达式


以上就是重拾java基础(十三):String姐妹StringBuffer、StringBuilder总结的内容,更多相关内容请关注PHP中文网(www.php.cn)!


Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn