详述 Java 语言中的 String、StringBuffer 和 StringBuilder 的区别及用法
来源:互联网 发布:游戏礼包领取软件 编辑:程序博客网 时间:2024/05/18 00:20
目录(?)[+]
1 简介
在 Java 语言中,共有 8 个基本的数据类型,分别为:byte、short、int、long、float、double、boolean 和 char,其中 char 类型用于表示单个字符,例如 a、b、c 、A、B、C、& 这些大小写字母或者特殊字符等等。在实际的编程中,单个的字符并没有我们想象中用的那么频繁,反而是多个字符组成的“字符串”更为常见,但是在基本的数据类型中,并没有字符串这种数据类型。为了解决这个问题,Java 语言为我们提供了一个被 final 关键字修饰的类 String,她就表示字符串类型,同时由于其被 final 修饰,这也表明咱们只能用这个类创建字符串以及调用其中的方法,却不能继承她。
虽然 Java 语言为我们提供了字符串类 String,能让我们方便的使用字符串类型,姑且这么说,但是在不断的发展中,我们发现单纯的 String 类型,并不足以满足我们的需求啦!因此,在 String 类型的基础上,又衍生出了两个字符串构建器 StringBuffer 和 StringBuilder。对于这三种类型,无论是在求职面试的过程中,还是在日后的实际工作中,都是需要我们经常面对的,因此了解她们之间的区别就显得尤为重要啦!
2 String
通过阅读“1 简介”,我们已经大致了解了 String 类型啦!说她是一个数据类型,但她并不是基本数据类型,而是一个被 final 修饰的、不可被继承的类,位于 java.lang 包。至于如何使用 String 类型,有两种方法,一是直接赋值,二是用 new 创建,具体示例如下:
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
在常见的字符串操作中,判断两个字符串是否相等尤为常见,且常用的判别方式有两种,即用 String 类提供的方法 equals 和 == 运算符,在博文“ Java 语言中 equals 和 == 的区别”中,作者详述了两者的区别,有兴趣的童鞋可以参考参考。接下来,作者将介绍一些使用频率比较高的 String 类的 API 方法:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
3 StringBuffer
在我们了解了 String 类之后,我们会发现她有些缺陷,例如当我们创建了一个 String 类的对象之后,我们很难对她进行增、删、改的操作,为了解决这个弊端,Java 语言就引入了 StringBuffer 类。StringBuffer 和 String 类似,只是由于 StringBuffer 的内部实现方式和 String 不同,StringBuffer 在进行字符串处理时,不用生成新的对象,所以在内存的使用上 StringBuffer 要优于 String 类。
在 StringBuffer 类中存在很多和 String 类一样的方法,这些方法在功能上和 String 类中的功能是完全一样的。但是有一个非常显著的区别在于,StringBuffer 对象每次修改都是修改对象本身,这点是其和 String 类的最大区别。
此外,StringBuffer 是线程安全的,可用于多线程。而且 StringBuffer 对象的初始化与 String 对象的初始化不大一样,通常情况下,我们使用构造方法进行初始化,即:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
接下来,介绍一些 StringBuffer 常用的 API 方法:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
4 StringBuilder
在 JDK 5.0 之后,Java 语言又引入了 StringBuilder 类,这个类的前身是 StringBuffer,其效率略微有些低,但允许采用多线程的方式执行添加或者删除字符的操作。如果所有的字符串在一个单线程中(通常都是这样)编辑,则应该用 StringBuilder 代替她,这两个类的 API 是完全相同的。因此,在本部分,作者就不再赘言啦!
5 总结
通过以上的介绍,咱们已经详细的了解了 String、StringBuffer 和 StringBuilder,也知道了她们三个都是用于操作字符串的类。接下来,作者大致总结一些三者的区别,以供参考:
- 对于操作效率而言,一般来说,StringBuilder > StringBuffer > String;
- 对于线程安全而言,StringBuffer 是线程安全的,可用于多线程;而 StringBuilder 是非线程安全的,用于单线程;
- 对于频繁的字符串操作而言,无论是 StringBuffer 还是 StringBuilder,都优于 String。
此外,通过 String 创建的对象的是不可变的,而通过 StringBuffer 和 StringBuilder 创建的对象是可以变的,这里的变与不变,指的是字符串的内容和长度。如果为了应对面试,能够记住以上内容的话,我想足够答的 perfect 啦;但是如果在实际开发中,如何选择,则要具体情况具体分析啦!
- 详述 Java 语言中的 String、StringBuffer 和 StringBuilder 的区别及用法
- 详述 Java 语言中的 String、StringBuffer 和 StringBuilder 的区别及用法
- String、StringBuilder、StringBuffer的区别及用法
- String, StringBuilder,Stringbuffer的区别及用法
- Java String,StringBuilder和StringBuffer的用法和区别
- Java中String ,StringBuffer和StringBuilder的区别和用法
- Java中的String、StringBuilder及StringBuffer的区别
- Java中的String、StringBuffer和StringBuilder区别
- 深刻理解Java中的String、StringBuffer和StringBuilder的区别
- Java中的String、StringBuffer和StringBuilder的区别
- java中的String、StringBuilder和StringBuffer的区别
- Java中的String,StringBuffer,StringBuilder的区别
- Java中的String,StringBuffer,StringBuilder的区别
- Java:String、StringBuffer和StringBuilder的用法
- StringBuilder和StringBuffer的区别及用法
- java-String StringBuffer和StringBuilder的区别
- Java:String、StringBuffer和StringBuilder的区别
- Java:String、StringBuffer和StringBuilder的区别
- 给老板汇报技术规划的一些要点
- TCP socket连接错误: socket operation on non-socket
- 用户贷款风险预测之Top10初体验
- 文章标题
- leetcode-第一周
- 详述 Java 语言中的 String、StringBuffer 和 StringBuilder 的区别及用法
- JAVABEAN EJB POJO区别
- Java线程安全初步了解
- 多线程-死锁
- 用Virtualbox搭建的ubuntu虚拟机开启与windows的共享文件夹
- json_encode转码过程中遇到的问题
- Appium在Android平台实战训练(一)
- 虚拟化的发展历程和实现原理——图文详解
- Zygote进程源码分析之一