J-13 常见对象

StringBuffer类
StringBuilder类
数组高级
Arrays类

StringBuffer类

概述

  • 我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。而StringBuffer就可以解决这个问题

  • 线程安全的可变字符序列

  • 效率与安全是矛盾的
    安全 -- 同步 -- 数据是安全的
    效率 -- 不同步 -- 数据是不安全的

  • StringBuffer与String的区别:
    ① 前者长度和内容可变,后者不可变
    ②如果是有前者进行字符串拼接,不会浪费太多的空间

构造方法

public StringBuffer() ,常用

无参构造方法

public StringBuffer(int capacity)

指定容量的字符串缓冲区对象

public StringBuffer(String str)

指定字符串内容的字符串缓冲区对象

成员方法

public int capacity()

返回当前容量,理论值。

public int length()

返回长度(字符数),实际值

添加功能

  • public StringBuffer append(String str)
    可以把任意类型数据添加到字符串缓冲区里面,并返回子字符串缓冲区本身(可以采用链式编程)

      StringBuffer sb = new StringBuffer();
      sb.append("hello").apend(true).append(12).append(34.56);
    
  • public StringBuffer insert(int offset,String str)
    可以把任意类型数据添加到字符串缓冲区某一位置中

删除功能

  • public StringBuffer deleteCharAt(int index)
    删除指定位置的字符,并返回本身
  • public StringBuffer delete(int start,int end)
    删除从指定位置开始到指定位置结束的内容,并返回本身
    (包左不包右)
    全部删除,sb.delete(0, sb.length());

替换功能

  • public StringBuffer replace(int start,int end,String str)
    从start开始到end,用str替换(包左不包右)

反转功能

  • public StringBuffer reverse()
    字符串翻转。"abc"变为"cba"。

截取功能

  • public String substring(int start)
    返回值为String类型!
  • public String substring(int start,int end)
    返回值为String类型!

StringBuffer与String的相互转换

  • 为什么进行类之间的转换
    A --> B的转换:为了使用B的功能
    B --> A的转换:需要的结果是A类型,需要转回来

String 到 StringBuffer

  • 通过构造方法

      String s = "hello";
      StringBuffer sb = new StringBuffer(s);
    
  • 通过append()方法

      StringBuffer sb2 = new StringBuffer();
      sb2.append(s);
    

StringBuffer 到 String

  • 通过构造方法

      StringBuffer buffer = new StringBuffer("java");
      String str = new String(buffer);
    
  • 通过toString()方法

      String str2 = buffer.toString();
    

StringBuffer和数组的区别

二者都可以看成是容器。
① StringBuffer的数据最终是一个字符串数据。
② 数组可以放置多种数据,但必须是同一种数据。

StringBuilder类

一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。

String、StringBuffer、StringBuilder的区别

① String是内容不可变的,而StringBuffer、StringBuilder是内容可变的;
② StringBuffer是同步的,数据安全,效率低;StringBuilder是不同步的,数据不安全,效率高。

数组高级

冒泡排序

规律:

① 相邻元素两两比较,大的往后放
② 每次比较完毕后,下一次比较的时候减少一个元素的比较
③ 总共需要比较数组长度-1次。

二分查找

思路:

  • 定义最小索引,最大索引
  • 计算出中间索引
  • 中间索引值与要查找的元素进行比较。
    ① 相等
    ② 大了,在左边找
    ③ 小了,在右边找
  • 重写获取最小索引或者最大索引
    ① 大了,max = mid -1;
    ② 小了,min = mid +1;

注意:

无序数组,不能采用二分查找。(改变了本身的索引值)

Arrays类

概述

针对数组进行操作的工具类。
无构造,全静态方法。

成员方法

public static String toString(int[] a)

把数组转成字符串
开发原则:只要是对象,就要先判断对象是否为null.

public static void sort(int[] a)

排序
底层是快速排序。

public static int binarySearch(int[] a,int key)

二分查找

原文地址:https://www.cnblogs.com/android-lyz/p/4836039.html