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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 天涯何处 中级黑马   /  2015-5-6 23:16  /  309 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

StringBuffer 字符串缓冲类。字符个数可以发生改变的字符串类。
        与String区别:
                String一旦被赋值,值不能发生改变。而StringBuffer,值还可以改变。
        为什么呢?
                StringBuffer采用的是缓冲区机制。
                一开始,首先开辟一些空间,然后,随着数据的增多,还可以继续开辟空间。这些操作针对的是同一个对象。
       
        构造方法:
                A: StringBuffer()
                B: StringBuffer(int capacity)
                C: StringBuffer(String str)
        成员方法:
                        public int length():字符个数。实际长度。
                        public int capacity():字符容量。理论长度。
                A:添加功能
                        public StringBuffer append(int i); -- 在结尾处添加
                        public StringBuffer insert(int index, int i); -- 在指定索引处添加
                B:删除功能
                        StringBuffer deleteCharAt(int index); -- 删除指定位置处的字符
                        StringBuffer delete(int start, int end); -- 删除指定开始位置和结束位置之间的字符
                C: 替换功能
                        StringBuffer replace(int start, int end, String str); -- 将指定范围内(索引从start到end,左闭右开)的字符串替换为指定字符串str
                D: 截取功能
                        public String substring(int start); -- 从索引为start处截取到结尾
                        public String substring(int start, int end); -- 从索引为start,截取到end。左闭右开。
                E: 反转功能
                        public StringBuffer reverse(); -- 将此字符序列用其反转形式取代
               
        补充:关于String类的面试题。
                1.        
                public static void main(String[] args) {
                        String s = "abc";
                        change(s);
                        System.out.println(s);
                }
                public static void change(String s) {
                        s += "hello";
                }
                注:基本类型 -- 形式参数改变不影响实际参数。
                        引用类型 -- 形式参数改变直接影响实际参数。
                        但是,字符串是特殊的引用类型,实参传递到形参时,实际上是把值传递给了形参。
               
                -- 如果是StringBuffer.则打印的是abchello。StringBuffer容量可变。
               
                2. 字符串拼接问题
                public static void main(String[] args) {
                        String s1 = "a";
                        String s2 = "b";
                        String s3 = "ab";
                        System.out.println(s3 == s1 + s2); // false
                        System.out.println(s3 == "a" + "b"); // true
                }
                注:JVM对于字符串引用,由于在字符串的"+"连接中,有字符串引用存在,而引用的值在程序编译期是无法确定的。
                        JVM对于字符串常量的"+"号连接,在程序编译期,JVM就将常量字符串的"+"连接优化为连接后的值。

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

7 个回复

倒序浏览
很详细,赞一个
回复 使用道具 举报
支持一下!
回复 使用道具 举报
赞。。赞
回复 使用道具 举报
楼主说得很详细 学习了
回复 使用道具 举报
马上要学这个,参考一下!!
回复 使用道具 举报
很详细。。。
回复 使用道具 举报
赞!!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马