a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 88|回复: 0

[基础知识] Java学习知识点要求(11)

[复制链接]
发表于 2012-8-4 12:37:27 | 显示全部楼层 |阅读模式
Java学习知识点要求(11)
5 n; N  g8 b8 ]5 ]16、 StringBuffer类与String的区别) t) e. _$ I+ _( ]* A
              String 对一串字符进行操作。不可变类。
' D2 A! B. v5 T  {; t              StringBuffer 也是对一串字符进行操作,但是可变类
" \7 ^) U" q, P3 j              String:是对象不是原始类型.
! G" T- u- c% r/ Y8 p6 U. D! U- g6 }为不可变对象,一旦被创建,就不能修改它的值.
+ q" e, P" w' H  D对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去.
6 a, n# ~, c* t5 C$ K8 UString 是final类,即不能被继承.3 H7 R0 _) t  @
StringBuffer:是一个可变对象,当对他进行修改的时候不会像String那样重新建立对象, R% D" F+ U0 w! X8 F2 z
它只能通过构造函数来建立,* B4 S" N# [1 d0 l
StringBuffer sb = new StringBuffer();7 E, D  Z" i, [3 n" T7 S
note:不能通过付值符号对他进行付值. : B5 `5 N7 a, ?) \
sb = "welcome to here!";//error
' o- J- K) N% b对象被建立以后,在内存中就会分配内存空间,并初始保存一个null.向StringBuffer! D* I7 @( v5 L
中付值的时候可以通过它的append方法.
, }* y. d) c, ?( Q% bsb.append("hello");
; v& P. |( e* N/ u4 h字符串连接操作中StringBuffer的效率要比String高:! h/ c; Y* ]4 d. m# B- ?& }$ T1 r
String str = new String("welcome to ");
6 J: B% R9 e7 M! @# C2 estr += "here";4 x" I9 Y% Q) L' {: T3 |5 d: a
的处理步骤实际上是通过建立一个StringBuffer,让侯调用append(),最后
* `! v/ U$ a" F# @再将StringBuffer toSting();
* N3 E) m' z0 @5 T% o6 U1 _$ H" p# f这样的话String的连接操作就比StringBuffer多出了一些附加操作,当然效率上要打折扣.$ `' o6 b" d3 e  h
并且由于String 对象是不可变对象,每次操作Sting 都会重新建立新的对象来保存新的值.4 `, B( V0 e& N8 ]9 F
这样原来的对象就没用了,就要被垃圾回收.这也是要影响性能的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-7 11:26 , Processed in 0.232692 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表