重拾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大基本数据类型:byteshortintlong;floatdouble;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支持正则表达式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值