zoukankan      html  css  js  c++  java
  • Java中的String、StringBuilder、StringBuffer

    Java中的String是个永恒的话题,直说我想说的。

    1、String 是永远不会变的,传递的引用是一个Copy,无论刮风下雨,它都在自己的小窝里呆的好好的。

    2、重载“+”和StringBuilder

      连接字符串可以通过“+”,也可以通过StringBuilder中的append();有时候为了偷懒就直接 用“+”,但是纠结心,总在觉得是不是会影响性能。先对此进行说明:

      通过jvm反应的字节码,当我们使用“+”实现连接字符串时,JVM会自动对其进行优化工作,引入StringBuilder进行连接字符串。所以对于简单的字符串连接,可以依靠JVM直接使用“+”进行连接字符串,但这个尽限于简单的拼接(当然难的你也可以用,只是。。。你懂的),对于复杂的字符串拼接,尤其是涉及到有循环的,建议使用StringBuilder,因为在循环中是“+”,在JVM进行实现的时候,会重复的创建StringBuilder对象。StringBuilder可以是使代码简短,简单,而且只会生成一个StringBuilder对象,而且还允许你预先指定大小(如果你已经大概知道最终的字符串的长度,预先指定大小,可以避免对此重新分配缓冲区)。

    3、StringBuilder和StringBuffer

       StringBuffer是线程安全的,因此开销大些,如果不是涉及到线程安全问题,建议使用StringBuilder,因为它更高效;

    !!!要尽量杜绝使用append(a+","+c);因为这个JVM会再为你创建一个StringBuilder对象处理括号内的字符串的拼接工作。

    下边提供一个StingBuilder的简单使用例子

    import java.util.Random;
    
    public class TestStringBuilder {
    
    	public static Random rand = new Random();
    	
    	public String toString(){
    		StringBuilder result = new StringBuilder("[");
    		for (int i = 0; i < 25; i++) {
    			result.append(rand.nextInt(100));
    			result.append(", ");
    		}
    		//去除最后的逗号和空格
    		result.delete(result.length()-2, result.length());
    		result.append("]");
    		return result.toString() ;
    	}
    	
    	public static void main(String[] args) {
    		TestStringBuilder ts = new TestStringBuilder();
    	    System.out.println(ts);
    	}
    }
    

      

  • 相关阅读:
    2020.06.09 手写数字识别-小数据集
    2020.6.1 深度学习-卷积
    2020.05.22 垃圾邮件分类2
    2020.05.08 分类与监督学习,朴素贝叶斯分类算法
    2020.04.27 主成分分析
    2020.04.27 特征选择
    2020.04.26 逻辑回归实践
    2020.04.24 逻辑归回
    2020.04.21 线性回归算法
    15 手写数字识别-小数据集
  • 原文地址:https://www.cnblogs.com/xiaotao726/p/4478071.html
Copyright © 2011-2022 走看看