StringBuffer类&包装类

StringBuffer类&包装类

StringBuffer类:线程安全的可变字符序列。

构造方法:

  StringBuffer()  初始容量为16个;

  StringBuffer(String str)  指定字符串的字符串缓冲区,初始容量为16+str的长度;

常用方法:

  1.append(obj)表示添加。

  2.capacity()  容量

  3.delete(start end) 删除,从start 位置开始,不包括end位置。

  4.insert(offset  obj)向offset位置插入obj

  5.length()长度

  6.replace(int start ,int end,String str)替换。

  7.reverse() 反转。一般用于判断字符串是否为镜面对象, 例如:“abcba”

代码演示:

 1 public static void main(String[] args) {
 2 //1 》创建对象
 3 StringBuffer sb=new StringBuffer();
 4 /*System.out.println(sb.capacity());
 5 System.out.println(sb.length());*/
 6 //2 》 append  添加
 7 // System.out.println("====");
 8 // 链式调用
 9 sb.append("abc").append("12345678901231");
10 /*System.out.println(sb.capacity());
11 System.out.println(sb.length());*/
12 //2 》创建对象的方式:
13 StringBuffer sb1=new StringBuffer("abc");
14 /* System.out.println(sb1.capacity());
15 System.out.println(sb1.length());*/
16 //3 》常用方法:
17 StringBuffer sb2=new StringBuffer("abcdef");
18 // System.out.println(sb2.delete(0, 3));
19 // insert(offset,obj)  向 offset 位置插入 obj
20 // System.out.println(sb2.insert(1, " 我 "));
21 // System.out.println(sb2.replace(0, 3, " 我们 "));
22 System.out.println(sb2.reverse());
23 }

StringBuffer与String   StringBuilder的区别:

如果是对字符串本身进行增删改操作,用StringBuffer,速度高于String 

String 的值不可以改变,而StringBuffer的值可以改变,这也是StringBuffer的增删改速度必String快的原因,因为String的值不可改,所以每次增删改都要新创建一个字符串,而StringBuffer本身是一个数组,它可以改变,不用创建新的,所以必String快

String类的equals方法是重写的,判断字符串值相同就是同一个字符串,StringBuffer没有重写。

 

StringBuilder:  线程不安全的,但是速度快

StringBuffer:    线程是安全的,但是速度慢

关于StringBuffer和StringBuilder的速度区别,就好比人们挤地铁,StringBuffer只有一个门,门口有地铁的警务员,服务员,很安全,但是上车的速度有点慢,而StringBuilder就好比这个地铁有好多门,虽然速度快,但是会有点不安全。

代码演示:

 1 public static void main(String[] args) {
 2 String s="";
 3 StringBuffer sb=new StringBuffer();
 4 long start = System.currentTimeMillis();
 5 /*for (int i = 0; i <5000; i++) {
 6 s+=i;
 7 }*/
 8 for (int i = 0; i <5000; i++) {
 9 sb.append(i);
10 }
11 long end = System.currentTimeMillis();
12 // System.out.println(end-start);
13 System.out.println(new StringBuffer("abc").equals(new StringBuffer("abc")));
14 System.out.println(new String("abc").equals(new String("abc")));
15 }

 

StringBuffer和String类型的转换

StringBuffer---》String:toString()方法;

String----------》StringBuffer :   new StringBuffer(str);

 

包装类“:

java 是面向对象的语言,但并不是完全面向对象的语言,比如String  str=new String()   str可以调用String类下的方法,

但是int i   这个i 却没有方法可以调用,所以提出了包装类的概念,包装类主要是针对基本数据类型的

基本数据类型              包装类

byte                             Byte

short        Short

char         Character

int          Integer

long         Long

float        Float

double         Double

boolean       Boolean

 

包装类的好处是:可以提供更多的功能。

本来int  short  char  等等类型是没有方法可调用的,但是有了包装类以后,这些类型都可以调用方法了。

 

Integer:

  构造方法:new Integer(int类型的数值);

       new Integer(str);将String 转化为Integer类型

常用方法:

parseInt(str)   将str字符串转化为数字

toBinaryString(int i) /   toHexString(int i)  /   toOctalString(int i)  转化为二进制   十六进制   八进制

 

装箱与拆箱:

装箱:将int类型包装成Integer类

拆箱:将Integer转化为int 类型

 

Character包装类常用方法:

isDigit(obj)  判断obj是否为数字

isLetter(char ch  ) 判断是否为字符(包括汉字)

代码演示:

 1 public class  包装类 {
 2 public static void main(String[] args) {
 3 int a=5;
 4 Integer a1=5;
 5 // 最大值与最小值
 6 /*System.out.println(Integer.MAX_VALUE);
 7 System.out.println(Integer.MIN_VALUE);
 8 System.out.println(new Integer("123"));*/
 9 // System.out.println(Integer.parseInt("456")==456);
10 System.out.println(Integer.valueOf("789"));
11 // 进制转换
12 /*System.out.println(Integer.toBinaryString(5));
13 System.out.println(Integer.toHexString(15));*/
14 // String s3="123";
15 // 拆箱与装箱
16 Integer i=5;// 装箱
17 new Integer(5);
18 int b=i;// 拆箱
19 }
20 }

 

posted @ 2019-04-01 20:19 ControllerMe 阅读( ...) 评论( ...) 编辑 收藏
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值