首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

字符串

一、基础知识

1.字符串:字符串和牛肉串是一个道理,字符串是一个个字符拼接成的串,牛肉串是一块块牛肉连成的串。

2.字符串的定义:java中采用String类/StringBuffer类/StringBudder类来创建字符串,调用类中已有的方法,实现对字符串的相应操作。

二、应用举例

1.String类

创建方式:

String name="hello java";(存储在字符串常量池,没有则创建有则直接引用)

String name=new String("hello world");(常见的对象创建形式,每new一次重新创建一个对象)

常用方法:

2.StringBuffer类

创建方式

StringBuffer sb = newStringBuffer("happy everyday");

常用方法

3.StringBuder类

创建方式

StringBudder sb = newStringBudder("happy everyday");

常用方法同上,两者都继承了AbstractStringBuilder类。

4.String/StringBuffer和StringBudder的区别

从长度是否可变来看:

String 是长度不可变的,本质在于源码中由final修饰,所以在修改字符串内容时,实际上是生成了一个新的对象,而指针指向了新的String对象。

StringBuffert和StringBudder则是长度可变的,本质在于源码中为非final修饰的字符数组。

从线程是否安全来看:

String是常量,显然线程安全。

StringBuffer是线程安全的,原因在于对方法加了同步锁或者对调用的方法加了同步锁,即synchronized关键字。

StringBudder是非线程安全的,并没有对方法进行加同步锁,所以是非线程安全的。

从运行的效率上来看:

通常情况下:StringBudder > StringBuffer > String(每次修改都要执行创建回收机制)

补充说明:

以上三种字符串创建方法的适用场景:

String:适用于少量的字符串操作的情况

StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况

StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180205G084JS00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券