字符串(String、StringBuffer与StringBuilder)

构建字符串对象具有三种方式,分别为String、StringBuffer和StringBuilder。


  • String

String最大的特性就是具有不可变性,整个类采用了final来进行修饰。String字符串内存空间被分配在方法区的常量池中,在进行等值方式进行赋值时,它首先在方法区的常量池中寻找是否有相同(内容相同)的字符串,如果存在相同字符串,则String类并不会创建一个新的对象,而是在栈上创建了一个新的引用指向常量池中的地址空间,这也就造就了String类的一个显著缺点,只要原字符串发生改变,则必定会在常量池中创建一个新的对象,如此频繁的操作对象势必会造成时间和空间上的浪费,但之所以设计者这样设计实际上是在共享机制所带来的效率和提取、拼接字符串所带来的效率进行了权衡,认为共享所提高的效率远远高于改变字符串所引起的低效率。

String类提供了50多种方法,以下是个人认为较为常用的方法:

 

方法

功能

char charAt(int index)

返回给定位置的代码单元,也就是指定位置的char

boolean equals(Object. other)

判断字符串与other内容、类型是否相同,判断流程:

1. “==”判断,若想等不进行之后判断,提高效率

2. "instanceof"进行类型判断

3. 内容判断

int indexOf(String str )

int indexOf(int cp)

int lastindexOf(String str )

int lastindexOf(int cp)

返回与字符串str或代码点cp匹配的第一个字串的开始/最后位置

int length()

返回字符串的长度

int replace(CharSequence oldString , CharSequence newString)

字符串代替,传入的数据处理成字符串特殊处理时可能会使用此方法去掉空格

String substring(int beginIndex)

String. substring(int beginIndex , int endIndex)

截取字串,从开始想截取的位置到最先不想截取的位置的字串,也就是beginIndex~endIndex-1

String tirm()

去掉字符串首位的空格

String join(CharSequence delimiter , CharSequence... elements)

构建特殊字符串,如字符串用/分隔开


  • StringBuffer

String适用于改变频率较低的字符串构建,Java也提供StringBuffer类来动态构建字符串,一般采用append()方法在原对象上追加,避免了String类不断创建字符串造成空间和时间上的浪费。常用方法如下:

方法

功能

int length()

返回构建器或者缓冲器中的代码单元数量

StringBuffer append(String str)

追加字符串

void setCharAt(int i , char c)

将第i个代码单元设置为c

StringBuffer insert(int offset , String str)

在offset位置插入一个代码单元并返回this

StringBuffer delete(int startIndex , int endIndex)

删除偏移量从startIndex到endIndex-1的代码单元

String toString()

返回一个与构建器或缓冲器内容相同的字符串


  • StringBuilder

StringBuilder类是JDK1.5之后引入的一个类,因为StringBuffer是线程安全的,它是通过重量级锁synchronized来解决并发问题的,在这种粒度的锁下,虽然允许采用多线程的方式执行添加或者删除字符串的操作,但同时也带来了效率问题,特别是在单线程情况下是非常不实用的,所以JDK1.5之后推出了StringBuilder类在单线程情况下去代替StringBuffer类,同时也不会丢失StringBuffer动态修改字符串的特性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值