zoukankan      html  css  js  c++  java
  • Day10:StringBuffer与StringBuilder

    这两个是String工具类的操作工具,主要涉及到字符串的计算

    /*
             * StringBuffer:字符串缓冲区。
             * 作为一个字符容器。
             * 特点:
             * 1,长度可以变化。
             * 2,可以对内容通过指定方法进行修改。
             * 3,容器对象一般都会具备对容器中的元素进行操作的功能。增删该查。
             * 4,缓冲区可以存储不同类型的数据。
             * 5,最终缓冲区存储完的数据都会变成字符串。
             * 
             * 
             */
            String str = "a"+4+'c';
            //在内存中的过程。1,创建一个字符串缓冲区容器。2,将要组成字符串的元素先存储起来。3,最后将缓冲区填充数据变成字符串。
            str = new StringBuffer().append("a").append(4).append('c').toString();
    /*
             * StringBuffer
             * 缓冲区可以对数据进行临时存储。
             * 
             * 了解缓冲区的常见方法。
             * 添加元素:
             * StringBuffer append(各种类型的数据);追加。
             * StringBuffer insert(index,各种类型的数据):指定位置添加。
             * 
             */
            
            //1,创建一个缓冲区对象。
            StringBuffer sb = new StringBuffer();
            
            //2,追加一个字符串。
            sb.append("abc");
            
            //3,插入一个boolean值true。
            sb.insert(1, true);
            
        
            
            //4,删除字符。
    //        sb.delete(1, 4);
            
            
            //5,修改字符。
            sb.replace(1, 5, "false");
            
    //        sb.setLength(20);
            sb.reverse();
            System.out.println(sb);//println方法会将所有要打印的数据先转成字符串在输出。对于对象会自动调用toString方法。
            
            
            
            /*
             * 字符串缓冲区中维护了一个"可变长度的数组"
             * 解释:其实就是超出内部数组长度后,新建数组长度要是原数组的1.X倍数。
             * 并将原数组的数据复制到新数组中,并将新的元素也添加到新数组中。
             * 
             */
    package cn.itcast.stringbuffer.demo;
    
    public class StringBufferTest {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
    
            /*
             * 1,通过缓冲区,将要打印的矩形组成元素*进行存储后,一次性返回。并输出。
             * 
             * 2,将int数组的元素转成字符串。格式为:[34,12,67]
             * 
             * 什么时候用字符串缓冲区。
             * 数据很多,个数无所谓确定,类型无所谓确定,只要最后都转成字符串。
             * 就使用StringBuffer这个容器。
             * 使用的局限性:1,必须最终转成字符串。
             *                2,无法对存储进来的元素进行单独操作。因为存储进来的元素都变成字符串。
             * {"abc","haha"} StringBuffer sb = new StringBuffer("abc");sb.append("haha")--->  "abchaha";
             */
    
            StringBuffer buf1 = new StringBuffer("hello");
            StringBuffer buf2 = new StringBuffer("java");
            test(buf1, buf2);
            System.out.println(buf1+"...."+buf2);
    
    //        String rec = draw(8, 5);
    //        System.out.println(rec);
            
            int[] arr = {34,12,67,43,29};
    //        String s = toString(arr);
            String s = toString2(arr);
            System.out.println(s);
    
        }
    
        public static void test(StringBuffer buf1, StringBuffer buf2) {
    
            buf1.append(buf2);
    
            buf1 = buf2;
    
        }
    
        /*
         * 画矩形的功能。 将需要组成矩形的元素进行临时存储。
         */
        public static String draw(int row, int col) {
    
            // 定义一个临时容器。
            StringBuffer sb = new StringBuffer();
    
            for (int i = 0; i < row; i++) {
                for (int j = 0; j < col; j++) {
                    sb.append("*");
                }
                sb.append("
    ");
            }
    
            return sb.toString();
        }
        /**
         * int数组转成字符串,通过StringBuffer
         */
        public static String toString2(int[] arr){
            
            StringBuffer sb = new StringBuffer();
            sb.append("[");
            for (int i = 0; i < arr.length; i++) {
                if(i!=arr.length-1){
                    sb.append(arr[i]+", ");
                }else{
                    sb.append(arr[i]+"]");
                }
            }
            return sb.toString();
            
        }
        /**
         * int数组转成字符串。
         */
        public static String toString(int[] arr) {
    
            String str = "[";
            for (int i = 0; i < arr.length; i++) {
                if (i != arr.length - 1) {
                    str += arr[i] + ", ";
    
                } else {
                    str += arr[i]+"]";
                }
            }
            return str;
        }
    }
         /*
             * JDK1.5以后,出现了StringBuilder和StringBuffer用法一样。
             * StringBuffer是线程同步的。
             * StringBuilder是线程不同步的。
             * 一般可以建议选择StringBuilder。因为速度快。
             * 
             * synchronized append();
             * 
             * synchronized insert();
             * 
             * synchronized delete();
             * 
             * 
             */
  • 相关阅读:
    毕业设计进度3
    毕业设计进度2
    毕业设计进度1
    hadoop环境搭建
    大数据之kettle安装
    服务化管理和治理框架的技术选型
    云时代架构读后感五
    云时代架构读后感四
    毕业设计2019/10/24至2019/10/31进度计划
    IT架构的本质
  • 原文地址:https://www.cnblogs.com/vijay/p/3508061.html
Copyright © 2011-2022 走看看