zoukankan      html  css  js  c++  java
  • java基础知识回顾之---java StringBuffer类

    /*
             * StringBuffer:就是字符串缓冲区,线程安全。
             * 用于存储数据的容器。
             * 特点:
             * 1,长度的可变的。
             * 2,可以存储不同类型数据。
             * 3,最终要转成字符串进行使用。
             * 4,可以对字符串进行修改。
             *
             * 构造方法:
             * StringBuffer() :构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。
               StringBuffer(int capacity):  构造一个不带字符,但具有指定初始容量的字符串缓冲区。     
             * 效率:
             *      如果事先知道要往容器中放多少字符,则使用第二中效率更高,因为虽然此容器室可变的,但是内部使用可变数组
             *  ,每次增长数组的长度,需要浪费时间,因为每次需要重新创建一个长度为原来数组两倍的新数组,
             *  而且还要复制原来数组的元素,需要一定的时间。
             *  看源码发现:StringBuffer 父类AbstractStringBuilder的方法:需要执行以下方法往容器里面填充:
             *  
             *   void expandCapacity(int minimumCapacity) {
                    int newCapacity = (value.length + 1) * 2;//原来数组的两倍多
                    if (newCapacity < 0) {
                        newCapacity = Integer.MAX_VALUE;
                    } else if (minimumCapacity > newCapacity) {
                        newCapacity = minimumCapacity;
                    }
                        value = Arrays.copyOf(value, newCapacity);//把原来数组的值复制到新数组当中,value代表原始数组,代表新数组的长度
                }
             *             
             *
             * 既然是一个容器对象。应该具备什么功能呢?
             * 1,添加:不同类型的数据
             *         StringBuffer append(data);
             *         StringBuffer insert(index,data);//在某个位置进行插入
             * 2,删除:
             *         StringBuffer delete(start,end):包含头,不包含尾。
             *         StringBuffer deleteCharAt(int index):删除指定位置的元素
             * 3,查找:
             *         char charAt(index);//查找元素
             *         int indexOf(string);//查找位置(第一次出现)
             *         int lastIndexOf(string);//查找位置(最后一次出现)
             * 4,修改:
             *         StringBuffer replace(start,end,string);//替换子字符串中的字符,使用给定字符串
             *         void setCharAt(index,char);//使用一个字符,替换指定位置上的字符
             *
             * 增删改查  C(create)U(update)R(read)D(delete)
             *
             * 特殊方法:
             * 5。设置字符串的长度public void setLength(int newLength) newLength 参数必须大于或等于 0。
             *      如果 newLength 参数小于当前长度,则长度将更改为指定的长度。
                     如果 newLength 参数大于或等于当前长度,则将追加有效的 null 字符 ('u0000'),使长度满足 newLength 参数。
                  
                看源码发现:value代表原始数组。
                public void setLength(int newLength) {
                    if (newLength < 0)
                        throw new StringIndexOutOfBoundsException(newLength);
                    if (newLength > value.length)
                        expandCapacity(newLength);
                
                    if (count < newLength) {
                        for (; count < newLength; count++)
                        value[count] = '';
                    } else {
                            count = newLength;
                    }
              }
             */

    public class StringBufferDemo {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
    
            
            bufferMethodDemo_2();
        }
        
        private static void bufferMethodDemo_2() {
            StringBuffer sb = new StringBuffer("abce");
            
            //删除
            sb.delete(1, 3);//ae
            sb.delete(0,sb.length());//清空缓冲区。
            //sb = new StringBuffer();
            
            sb.append("abced");
            sb.replace(1, 3, "nba");//包含头,不包含尾部,替换,1,2位置:b和c
            System.out.println("repalce***********"+sb.toString());//输出repalce***********anbaed
            sb.setCharAt(2, 'q');//输出
            System.out.println("setCharAt******:"+sb);//输出setCharAt******:anqaed
            sb.setLength(10);//设置字符序列的长度
            System.out.println("sb:"+sb);
            System.out.println("len:"+sb.length());
            System.out.println(""+sb.reverse().toString());//输出deaqna
    
            
        }
    
        private static void bufferMethodDemo_1() {
            StringBuffer sb = new StringBuffer("abce");
    //        sb.append("xixi");
            sb.insert(2, "qq");//在c的位置进行插入,c向后顺延,输出abqqce
            System.out.println(sb.toString());
        }
    
        public static void bufferMethodDemo(){
            //创建缓冲区对象。
            StringBuffer sb = new StringBuffer();
            sb.append(4).append(false);//.append("haha");
            sb.insert(1, "haha");
    //        sb.append(true);
            System.out.println(sb);
            
        }
    }
     
  • 相关阅读:
    Web网页配色方案及安全色谱
    JQuery获取元素文档大小、偏移和位置和滚动条位置的方法集合
    IE8的css hack
    jquery 获取元素坐标
    CSS 颜色值
    正则表达式
    JS获取宽度
    常用正则表达式例子
    HTML转义字符
    myeclipse 10.0 含破解补丁/注册机
  • 原文地址:https://www.cnblogs.com/200911/p/3875235.html
Copyright © 2011-2022 走看看