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编程思想》

  • 相关阅读:
    win8 开发之旅(1) 连连看游戏开发 前奏
    win8 开发之旅(2) 连连看游戏开发 项目错误的总结
    常见的排序算法五——堆排序
    我与mongodb 二三事(1)
    常见的排序算法四——直接选择排序
    我与mongodb 二三事(2)
    oracleHelper的使用
    公司A、公司B、公司C……
    javascript调用C#后台程序执行查询
    通过翻译学英语
  • 原文地址:https://www.cnblogs.com/hjwq/p/7384667.html
Copyright © 2011-2022 走看看