Discuss / Java / StringBuilder 作业

StringBuilder 作业

Topic source

Junes_99994

#1 Created at ... [Delete] [Delete and Lock User]

    static String buildInsertSql(String table, String[] fields) {

        StringBuilder sb = new StringBuilder("INSERT INTO %s (%s) VALUES (%s)");

        String[] insertStr = new String[]{table,String.join(", ", fields),String.join(", ", fields).replaceAll("\\w+", "?")};

        int index = sb.indexOf("%s");

        for(String str :insertStr){

            sb.replace(index,index+2,str);

            index = sb.indexOf("%s", index + 1);

        }

        return new String(sb);//sb.toString();

    }

StringBuilder 相当于可变的String ,StringBuffer 除用于多线程同步以外和StringBuilder 没区别

Junes_99994

#2 Created at ... [Delete] [Delete and Lock User]

StringBuilder 的默认容量 为 (16bytes + 初始化参数bytes)

如果其容量发生了溢出,则会双倍增幅当前容量 int newCapacity = (value.length + 1) * 2,并以此创建新容器

sb.capacity() 可用于查看当前容量

sb.length() 可用于查看当前有效字符长度

Junes_99994

#3 Created at ... [Delete] [Delete and Lock User]

        StringBuilder sb = new StringBuilder(64);

        sb.append("INSERT INTO %s (%s) VALUES (%s)");

这样修改就不会发生溢出并重新创容器的过程


  • 1

Reply