天天看点

常用类 String StringBuilder StringBuffer

String

被称为不可变字符序列(不可变的原因是常量池中的数据唯一)

string通过char数组来保存字符串,重写了了object的equals方法,比较的是值

String类常用方法
1 String str = "str";
2 String str = new String();
3 String str = new String("abcd");
4 char[] c = {"a","b"}
  String str = new String(c);
6 length();返回长度
7 isEmpty();  判断是否为空
8 String str = new String("abcd");
  str.charAt(2);   输出为c   越界返回-1
  str.indexof("b"); 输出为1  找的到,返回位置 从左往右找  找不到返回-1
  str.lastindexof("b"); 输出为2  从右往左找  
  str.replace("a","*");  最后输出的数组 *bcd
9 equal(); 
  System.out.println("ABC".equalsIgnoreCode("abc")); 结果为true 忽视大小写比较
10 substring(); 截取  输出不对 抛出异常
11 String str = {aaa,bbb,ccc}
   String[] strArray =	str.split(",");  按,进行切割 返回一个新的数组
   for(i=0;i<strArray.length;i++){
   		System.out.println(strArray(i);
   }
12 trim();去除首位空格
13 toString(); 用于返回以一个字符串表示的 Number 对象值。 
14 startsWish();  判断String类是不是由什么开始,是结果返回true
   endsWish();   判断String类是不是由什么结束,是结果返回true
15 转化为大写或小写 toLowerCase();转化为小写
                 toUpperCase();转化为大写
           

stringBulider和StringBuffer

string是不可变的 是常量 由final修饰 字符串对象生成中 String的效率比StringBuffer高

StringBuilder 是一个可变的字符序列 它继承于AbstractStringBuilder,实现了CharSequence接口 非线程安全(是单线程的)

stringbuffer 是线程安全的 需要做线程同步检查 字符串变量 速度上StringBuilder>stringBuffer>String

享元模式:当生成一个新内容的字符串时,他们被添加在共享池中,第二次生成同样内容的字符串实例时,就共享此对象,而不是创建一个对象。

1. 重载的public StringBuilder append(…)方法
        可以为该StringBuilder 对象添加字符序列,仍然返回自身对象。
      2. 方法 public StringBuilder delete(int start,int end)
        可以删除从start开始到end-1为止的一段字符序列,仍然返回自身对象。
      3. 方法 public StringBuilder deleteCharAt(int index)
        移除此序列指定位置上的 char,仍然返回自身对象。
      4. 重载的public StringBuilder insert(…)方法
        可以为该StringBuilder 对象在指定位置插入字符序列,仍然返回自身对象。
      5. 方法 public StringBuilder reverse()
        用于将字符序列逆序,仍然返回自身对象。
      6. 方法 public String toString() 返回此序列中数据的字符串表示形式。
      7. 和 String 类含义类似的方法:
sb.append();  循环累加添加字符串使用该方法,(防止系统崩溃)   具体看下方的图
(我们将来的项目是服务器程序,会有多个程序去访问)
sb.reverse();  数组倒序
sb.setCharAt(3,"高"); 将数组内下标为3的元素改为高
sb.insert(0,"wo").insert(1,"w");  向数组内添加元素   链式调用  因为它源码中返回了自己
sb.delect(20,21);  这种区间都为包左不包右
           
一个事例
常用类 String StringBuilder StringBuffer
结果:string占用内存:12406960。 占用时间:59。
常用类 String StringBuilder StringBuffer
占用内存0 占用时间1