Java高级Day15-String,StringBuffer,StringBuilder

49.String类结构分析

1.String 对象用于保存字符串,也就是一组字符序列

2.字符串常量对象是用双引号括起的字符序列

3.字符串的字符用Unicode字符编码,一个字符占2个字节

4.String 实现了接口 Serializable【String 可以串行化:可以在网络传输】

5.String 实现了接口 Comparable【String 对象可以比较大小】

6.String 是final类,不可以被继承

7.String 有属性 private final char value[]; 用于存放字符串内容

8.一定要注意:value 是一个final类型,不可修改(value地址不可修改)

50.String创建剖析

方式一:直接赋值 String s = "zkw";

方式二:调用构造器 String s2 = new String("zkw");

方式一:先从常量池查看置否有“zkw”的数据空间,如果有,直接指向;如果没有则重新创建,然后指向。s最终指向的是常量池的空间地址

方式二:先在堆中创建空间,里面维护了value属性,指向常量池的zkw空间,如果常量池没有zkw,重新创建,如果有,直接通过value指向,最终指向的是堆中的空间地址

51.String类常用方法

String类是保存字符串常量的,每次更新都需要重新开辟空间

  • equals //区分大小写,判断内容是否相等

  • equalsIgnoreCase //忽略大小写的判断内容是否相等

  • length //获取字符的个数,字符串的长度

  • indexOf //获取字符在字符串中第1此出现的索引,索引从0开始,如果找不到,返回-1

  • lastIndexOf //获取字符在字符串中最后1次出现的索引,索引从0开始,如果找不到,返回-1

  • substring //截取指定范围的子串

  • trim //去前后空格

  • charAt //获取某索引处的字符,注意不能使用Str[index]这种方式

    String str = "hello";
    //str[0]   不对
    //str.charAt(0) => h
  • toUpperCase //转换成大写

  • toLowerCase //转换成小写

  • concat //拼接字符串

  • replace //替换字符串中的字符

  • split //分割字符串,对于某些分割字符,我们需要 转义比如

  • compareTo //比较两个字符串的大小

  • toCharArray //转换成字符数组

  • format //格式字符串,%s字符串 %c字符 %d 整型 %.2f 浮点型

52.StringBuffer

StringBuffer代表可变的字符序列,可以对字符串内容进行增删,很多方法与String相同,但是StringBuffer是可变长度的;StringBuffer是一个容器

  1. StringBuffer 的直接父类是 AbstractStringBuilder

  2. StringBuffer 实现了 Serializaable,即StringBuffer的对象可以串行化

  3. 在父类中 AbstractStringBuilder 有属性 char[] value,不是final,该value 数组存放字符串,因此存放在堆中的

  4. StringBuffer 是一个final类,不能被继承

String VS StringBuffer:

1.String保存的是字符常量,里面的值不能更改,每次String类的更新实际上就是更改地址,效率较低

2.StringBuffer保存的是字符串变量,里面的值可以更改,每次StringBuffer的更新实际上可以更新内容,不用更新地址,效率较高

StringBuffer构造器:

//1.创建一个大小为16的char[],用于存放字符内容
StringBuffer stringBuffer = new StringBuffer();
​
//2.通过构造器指定char[]大小
StringBuffer stringBuffer1 = new StringBuffer(100);
​
//3.通过给一个tring创建StringBuffer,cahr[]大小就是str.length() + 16
StringBuffer stringBuffer2 = new StringBuffer("hello");

String和StringBuffer相互转换:

//看String--->StringBuffer
String str = "hello tom";
//方式1 使用构造器
//注意:返回的才是StringBuffer对象,堆str本身没有影响
StringBuffer stringBuffer = new StringBuffer(str);
//方式2 使用的是append方法
StringBuffer stringBuffer1 = new StringBuffer();
stringBuffer1 = stringBuffer1.append(str);
​
//看StringBuffer--->String
StringBuffer stringBuffer2 = new StringBuffer("嘻嘻哈哈");
//方式1 使用StringBuffer提供的 toString方法
String = stringBuffer2.toString();
//方式2 使用构造器
String s1 = new String(stringBuffer2);

StringBuffer方法:

1.增 append

2.删 delete(start,end)

3.改 replace(start,end,string) //将start---end间的内容替换掉,不含end

4.查 indexOf //查找子串在字符串第1次出现的索引,如果找不到返回-1

5.插 insert

6.获取长度 length

53.StringBuilder

一个可变的字符序列,此类提供一个与StringBuffer兼容的API,但不保证同步。该类被设计用作StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候。如果可能,建议优先采用该类,因为在大多数实现中,它比StringBuffer要快

在StringBuilder上主要操作是append和insert方法,可以重载这些方法,以接受任意类型的数据

一般StringBuffer用在多线程,StringBuilder用在单线程

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值