A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 梦想家Eva 中级黑马   /  2015-11-27 21:02  /  846 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

先来两个面试题:
1.String,StringBuffer,StringBuilder的区别:
a.StringBuffer和StringBuilder的区别:
        StringBuffer是jdk1.0版本的,是线程安全的,效率低
       StringBuilder是jdk1.5版本的,是线程不安全的,效率高
b.String和StringBuffer,StringBuilder的区别
     String是不可变的字符序列
    StringBuffer和StringBuilder是可变的字符序列

2.String和StringBuffer分别作为参数传递问题
   我们知道基本数据类型是值传递,不会改变其值,引用数据类型是是址传递,会改变其值。
但是String类虽然是引用数据类型,当作参数传递时,不会改变其值,因为方法里面对String值改变的操作,都是再创建以string对象,并且该对象随着方法的结束而变成垃圾。
  String对象的特点,一旦被初始化,就不能被改变
  StringBuffer则与String不一样,同其他引用数据类型一样,做参数传递时,同样传入的是地址值,但是方法中发生改变返回的是本身,方法弹栈后,改变的值仍然有效。

StringBuffer的添加功能:
1.public StringBuffer append(String str):可以把任意数据类型添加到字符串缓冲区里面,并返回字符串缓冲区本身
  注意:StringBuffer是字符串缓冲区,当new的时候是在堆内存创建了一个对象,底层是一个长度为16的字符数组,当调用添加的方法时,不会再重新创建对象,而是不断向原缓冲区添加字符
StringBuffer类中重写了toString方法,显示的是对象中的属性值
2.public StringBuffer insert(int offsert, String str): 在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符缓冲区本身
注意:如果没有指定位置的索引就会报StringIndexOutOfBoundsException异常。


StringBuffer的删除功能:
1.public StringBuffer deleteCharAt(int index) 删除指定位置的字符,并返回字符缓冲区本身
注意:当缓冲区中这个索引上没有元素的时候就会报StringIndexOutOfBoundsException异常
2.public StringBuffer delete(int start,int end) 删除从指定位置开始到指定位置结束的内容,返回字符缓冲区本身
若清空缓冲区可写为delete(0,sb.length())

StringBuffer的替换功能:
1.public StringBuffer replace(int start,int end,String str) 从start开始到end结束用str替换
2.StringBuffer的反转功能 public StringBuffer reverse() 将字符串反转

StringBuffer的截取功能:
1.pubic string subString(int start) 从指定位置开始截取到末尾
2.public string subString(int start, int end)  截取从指定位置开始到指定位置结束

注意:返回值的类型是String,不再是StringBuffer本身。返回的是一个新的字符串,原StringBuffer本身不变。

StringBuffer与String的转换:
1.String——> StringBuffer
    a.通过构造方法
    b.通过append方法
2.StringBuffer——>String
    a.通过构造方法
    b.通过toString方法
    c.通过subString(0,str.length)

2 个回复

正序浏览
写的很好 我学习到了
回复 使用道具 举报
666                                            
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马