zoukankan      html  css  js  c++  java
  • java日常-String/StringBuilder/StringBuffer

    String不可变:

    String是不可变的,每当把String参数作为方法的参数时候,都会复制一份引用,而该引用所指的一个新的对象一直待在单一的物理位置上。

    StringBuilder对象:

    当你为一个类编写tiString()对象时候,如果字符串操作比较简单,那就可以信赖编译器,他会为你合理的构造最终的字符串结果。但是,如果你要在toString()方法中使用循环,那么最好自己创建一个StringBuilder对象,用它来构建最终的结果。

    比如:

    public class UsingStringBuilder {
        public Random rand = new Random(47);
        
        public String toString(){
            //如果在toString()中使用了循环,那么要建立StringBuilder对象
            StringBuilder sb = new StringBuilder("[");
            for(int i=0;i<25;i++){
                sb.append(rand.nextInt(100));
                sb.append(", ");
                
            }
            sb.delete(sb.length()-2, sb.length());
            sb.append("]");
            return sb.toString();
        }
        
        public static void main(String[] args){
            UsingStringBuilder usb = new UsingStringBuilder();
            System.out.print(usb);
        }
    
    }

    执行结果:

    [58, 55, 93, 61, 61, 29, 68, 0, 22, 7, 88, 28, 51, 89, 9, 78, 98, 61, 20, 58, 16, 40, 11, 22, 4]

    StringBuildr与StringBuffer:

    StringBuilder是java SE5引入的,在这之前java用的是StringBuffer。StringBuffer是线程安全的,所以说开销也会大一些;在使用String中,编译器会自动引入java.lang.StringBuilder类,虽然我们在源代码中没有使用SringBuilder,但是编译器会自动主张的使用它,因为StringBuilder更加高效。

    总而言之,StringBuilder是高效的,StringBuffer是线程安全的,但是开销比较到。

     StringBuilder中经常弄到的方法:

    insert()、relieace()、substring()、reverse()、append()、tostring()、delete()

    ps:本博客参考自《java编程思想》

  • 相关阅读:
    Path Sum
    【转】Python的神奇方法指南
    【转】浅析Python中的struct模块
    【转】Python之系统交互(subprocess)
    【转】Win10下python3和python2多版本同时安装并解决pip共存问题
    【转】python包导入细节
    【转】python 历险记(四)— python 中常用的 json 操作
    【转】python模块导入细节
    【转】python 内置函数总结(大部分)
    【转】MySQL-Select语句高级应用
  • 原文地址:https://www.cnblogs.com/hjwq/p/7384667.html
Copyright © 2011-2022 走看看