黑马程序员技术交流社区

标题: 笔记 [打印本页]

作者: 天涯何处    时间: 2015-5-6 23:16
标题: 笔记
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就将常量字符串的"+"连接优化为连接后的值。

作者: richaled    时间: 2015-5-7 08:02
很详细,赞一个
作者: csu050416    时间: 2015-5-7 10:01
支持一下!
作者: shaoic    时间: 2015-5-7 10:07
赞。。赞
作者: ddddk    时间: 2015-5-7 10:08
楼主说得很详细 学习了
作者: 懒儿想想    时间: 2015-5-7 10:22
马上要学这个,参考一下!!
作者: 知来者之可追    时间: 2015-5-7 10:34
很详细。。。
作者: dengxing    时间: 2015-5-7 10:46
赞!!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2