zoukankan      html  css  js  c++  java
  • Java 字符串总结

    三种字符串类:String,StringBuilder,StringBuffer

    String类

    1. 常用构造器

    构造器  
    public String(char value[])  
    public String(char value[],int offset,int count)  

     

     

     

     

    2. 常用方法

    方法 功能
    public char charAt(int index) a.charAt[i]类似于C中a[i]
    public char[] toCharArray()  
    public String subString(int begin,int end)  
    public boolean equals(Object o)  
    public int length()  
    public String trim() 将前导和后继空格或缩进(不可见字符)去掉

     

     

     

     

     

     

     

     

     

     

     

     

    3. String对象的不可变性

    存在代码如下

    String a="abab";
    String b= "ab"+"ab";
    System.out.println(a==b);
    b="ab";
    String c=b+"ab";
    System.out.println(a==c);

    结果为true false,原因是Java中每一个String对象都是不可变的。JVM在堆内存中为String对象开辟了一个空间叫做字符串常量池,每个已创建的String对象都会放在这个内存空间中,很显然String c指向的字符串常量和String a指向的字符串常量的地址是不同的,因此输出false。那么 之前比较String a和String b为什么又输出true了呢?,因为Java为了节省内存空间,在两个字符串常量进行连接时会检查池中是否已经存在该目标字符串,如果存在,就直接返回该串的指针。

     

    4. String对象不好的地方

    前面说过,String对象是不变的,因此一旦存在大量的String拼接等变化时,String的效率将会变得很低

    StringBuilder类

    1. 常用构造器

    构造器  
    public StringBuilder(String str)  
    public StringBuilder(int capacity) 指定容量为capacity个字符
    public StringBuilder() 默认容量为16个字符

     

     

    2. 常用方法

    方法 功能
    public StringBuilder append(String str) 可以不设返回,简写可为a.append(b) ,也可写成a=a+b,同时,StringBuilder只能与String拼接
    public StringBuilder insert(int offset,String str)  
    public StringBuilder delete(int start,int end)  
    public StringBuilder reverse()  
    public String toString  

     

     

     

    3. StringBuilder的优缺点

    相对于String对象,在于增删查改方面,StringBuilder效率好多了,但StringBuilder并没有对增删查改方法进行同步,因此StringBuilder类并不是线程安全的,在多线程操作时会出现问题。

    StringBuffer类

    相对于StringBuilder,StringBuffer增加了线程安全机制,方法实现了同步。不过构造器和方法跟StringBuilder基本一样,这里就不再记录~

    不过相较于StringBuilder类,StringBuffer由于实现了同步,可能效率上要比StringBuilder要低一点,不过也很有限。

    对于同一个程序,两者跑完58组数据的时间相差也就100ms左右

  • 相关阅读:
    Android 数据存储之 SQLite数据库存储
    Android 数据存储之 SharedPreferences储存
    Android 数据存储之 文件存储
    SSTABLE简介
    zookeeper原理
    改变win7驱动图标
    也谈谈拖延癌
    STM32f103之外部中断
    LPC1768/1769之CAN控制器概述(附库函数下载地址)
    Silicon C8051F340之时钟系统
  • 原文地址:https://www.cnblogs.com/zsyacm666666/p/6527469.html
Copyright © 2011-2022 走看看