Arrays

此类包含用来操作数组(比如排序和搜索)的各种方法,此类还包含一个允许将数组作为列表来查看的静态工厂。

静态方法

void sort(除了boolean的基本数据类型数组对象)//排序方法,默认为升
String toString(基本数据类型数组对象)//返回指定数组内容的字符串表示形式
基本数据类型数组对象 copyOf(基本数据类型数组对象,新数组长度)//复制指定的数组,截取或用0填充(如有必要),以使副本具有指定长度
List asList(基本数据类型数组对象)//将数组转为集合,虽然可以把数组转成集合,但是集合的长度不能改变
基本数据类型数组对象 对象克隆基本数据类型数组对象.clone()//对象克隆,这个方法不是静态方法

Cloneable接口:克隆

Cloneable其实就是一个标记接口,只有实现这个接口后,然后在类中重写Object中的clone方法,然后通过类调用clone方法才能克隆成功,如果不实现这个接口,则会抛出CloneNotSupportedException(克隆不被支持)异常。

Comparable接口:排序

此接口强行对实现它的每个类的对象进行整体排序。此排序被称为该类的自然排序 ,类的compareTo方法被称为它的自然比较方法 。实现此接口的对象列表(和数组)可以通过 Collections.sort(和 Arrays.sort )进行自动排序。实现此接口的对象可以用作有序映射表中的键或有序集合中的元素,无需指定比较器。 

String

判断方法

boolean equals(Object object)//比较字符串的内容是否相同,区别大小写
boolean equalslgnoreCase(String string)//比较字符串的内容是否相同,不区别大小写
boolean contains(CharSequence s)//判断大字符串中是否包含小字符串
boolean startsWith(String prefix)//判断字符串是否以某个指定的字符串开头
boolean endsWith(String suffix)//判断字符串是否以某个指定的字符串结尾
boolean isEmpty()//判断字符串内容是否为空,当且仅当length()为0时返回true
String s = " ";//字符串内容为空
String s = null;//字符串对象为空,空指针异常

获取方法

int length()//获取字符串的长度
char charAt(int index)//获取指定索引位置的字符
int indexOf(String/int str)//返回指定字符/字符串在此字符串中第一次出现处的索引
int indexOf(String/int ch,int fromIndex)//返回指定字符/字符串在此字符串中从指定位置后第一次出现处的索引(参数列表为什么是int不是char,int比char大,用char代表输入ascll码值会强转)
String Substring(int beginIndex)//从指定位置开始截取字符串,默认到末尾(从指定位置开始到指定位置结束截取字符串,包左不包右)

转换方法

byte[] getBytes()//把字符串转换为字节数组
char[] toCharArray()//把字符串转换为字符数组
Sting valueOf(Object object)//可以把任意类型的数据转换成字符串,静态方法
String toLowerCase()//把字符串转成小写
String toUpperCase()//把字符串转成大写
String concat(String str)//把字符串拼接

其他方法

String replace(char oldChar,char newChar)//替换
String trim()//去除两边空格
int compareTo(String anotherString)//按字典顺序比较两个字符串,区分大小写,等于返回0,小于返回负整数,大于返回正整数
int compareToIgnoreCase(String anotherString)//按字典顺序比较两个字符串,不区分大小写
String[] split(String regex)//将一个字符串分割为子字符串,结果作为字符串数组返回
int codePointAt(int index)//返回指定索引处的字符(Unicode代码点)
直接输出对象名称,其本质是调用该对象的toString()方法。

字符串连接

  1. 使用“+”;(常量池)
  2. 使用String类的concat()方法。(堆区)

字符串如果是变量相加,先开空间,在拼接。

字符串如果是常量,是先加,然后在常量池找,如果有就直接返回,否则,就创建。

String初始化

String a = "Hello";//存储在常量池。字符串直接赋值的方式是先到字符串常量池里面去找,如果有就直接返回,没有,就创建并返回。一旦被赋值就不能被改变。
String a = new String("Hello");//存储在堆区
String b = new String("Hello");//(a == b)结果为false

StringBuffer

初始容量为16个字符,添加内容的同时容量会扩充。

添加方法

StringBuffer append(Object object)//在尾部添加内容
StringBuffer insert(int offset,Object object)//在指定的位置添加内容

删除方法

StringBuffer deleteCharAt(int index)//删除指定位置的字符
StringBuffer delete(int start,int end)//删除从指定位置开始指定位置结束的内容

其他方法

int capacity()//返回当前容量
int length()//返回当前长度
StringBuffer replace(int start,int end,String regex)//将指定范围的内容替换成其他内容
StringBuffer reverse()//字符串的反转
String subString(int start,int end)//截取指定范围内的字符串

String和StringBuffer的相互转换

String-->StringBuffer

  1. StringBuffer sb = new StringBuffer(String对象);

StringBuffer-->String

  1. String str = new String(StringBuffer对象);
  2. toString();

String,StringBuffer,StringBuilder的区别

String是内容不可变的,而StringBuffer,StringBuilder都是内容可变的。

执行速度:StringBuilder最佳,StringBuffer次之,String最差。

String:字符串常量;StringBuffer:字符串变量(线程安全);StringBuilder:字符串变量(线程非安全)。

String:操作少量数据;StringBuilder:单线程下操作大量数据;StringBuffer:多线程下操作大量数据。

StringBuffer是同步的,数据安全,效率低;StringBuilder是异步的,数据不安全,效率高。

StringBuffer和数组的区别

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