生成字符串对象的几种方法

 时间:2024-10-12 06:08:07

1、首先来说String类。最常见的创建方式莫过于,直接定义个字符串String str="123";使用这种定义方式,java会在对堆中创建一个对象,并把“123”存储在其final的char数组中,然后把对象的引用存储在常量池和StringTable中,而str变量则指向了常量池的引用。

生成字符串对象的几种方法
生成字符串对象的几种方法

2、第二种常用的创建方式是new String(String str)的方式。比如new String("123");对于这种方式创建的对象java会在堆中直接创建一个新的String实例,只不过其final的char数组指向了“1”中char数组的地址。这叫共享字符数组:share。下面会提到。

生成字符串对象的几种方法
生成字符串对象的几种方法

3、在文件操作中经常会用到两种创建字符串的方式,把文件流中的字符存储到String中,然后再存储到其他地方。第一种:String(char value[]),将一个字符数组转化成一个String对象。第二种:String(char value[], int offset, int count),将索引offset到offset+count位置的字符转化成一个String对象。

生成字符串对象的几种方法
生成字符串对象的几种方法

4、再来看StringBuilder,创建一个StringBuilder的字符串对象,new StringBuilder(String str)或者new StringBuilder()。因为StringBuilder实例是可变的字符串对象,所以其提供了append方法,用于追加字符串。

生成字符串对象的几种方法
生成字符串对象的几种方法

5、StringBuffer和StringBuilder类似。正如我们所猜想的,StringBuffer如果想线程安全就需要加锁。

生成字符串对象的几种方法

6、还有一种最为常见的首疏扌熘创建方式就是toString(),每个类都有这个方法,这也是调用了Sting类的构造方法去创建字符串对象。比如StingBuffer中的toString。不过Stri荏鱿胫协ngBuffer为什么被称为Buffer哪,他是不是有缓存的功能,是的。(1)StringBuffer定义了一个:transient char[] toStringCache,这个字符数组只有在StringBuffer实例调用了toString方法才会赋值,StringBuffer实例每次的修改都会将toStringCache置为空。(2)再来看上面的toString方法。如果toStringCache不空,直接根据toStringCache创建String对象,并且此String对象的char数组直接指向toStringCache(共享数组)。如果为null,则给其赋值,然后再new一个Stirng对象。

生成字符串对象的几种方法
生成字符串对象的几种方法
生成字符串对象的几种方法

7、(3)所以说,如果StringBuffer实例创建完成后,不对实例做修改;然后多次调用toString获取其字符串的值,是非常高效的。(4)为什么说高效:这就需要和StringBuilder对比一下了,看一眼StringBuilder的toStirng,他是真的创建了一个字符数组,而StringBuffer则是共享。

生成字符串对象的几种方法
生成字符串对象的几种方法
  • word中给上弧形箭头添加彩虹出岫渐变和阴影
  • vs2010 注释的字复制到word怎么修改
  • PHP教程 如何修改变量的值
  • 初学结构体 -c语言
  • printscreen键截图后怎么查看
  • 热门搜索
    我们的节日手抄报 防疫手抄报大全图片 说好普通话手抄报 有关汉字的手抄报 初中生手抄报 关于阅读的手抄报 开学了手抄报 小学生读书手抄报 溺水手抄报简单又漂亮 小学生手抄报内容