java.lang.Stringjava
String即字符串,建立以后不可更改(能够指向其余String)数组
这里要分清楚空字符串""和空null的区别,空字符串""是一个对象,只是没有存储字符串;null表示什么也没有(连对象也没有)安全
public String() //空构造 public String(byte[] bytes) //将byte转化为String public String(byte[] bytes,Charset charset) //使用指定字符集把字节数组转成字符串 public String(byte[] bytes,int index,int length) //将字节数组的一部分转成字符串 public String(char[] value) //将字符数组转成字符串 public String(char[] value,int index,int count) //将字符数组的一部分转成字符串 public String(String original)
String s1 = "abc"; //s1指向一个字符串字面值,而字符串字面值位于字符串常量池中,字符串常量池位于方法区中 String s2 = "abc"; //相同的字符串字面值在字符串常量池中只有一份,也就是说s1,s2指向字符串常量池中的同一个字符串字面值 System.out.println(s1==s2); //s1,s2指向同一个对象 System.out.println(s1.equals(s2)); //s1,s2指向对象内容相同
String s1 = "ab"; String s2 = "abc"; String s3 = s1 + "c"; System.out.println(s3 == s2); //false,字符串间串联是经过Stringbuffer或Stringbuilder类的append方法实现的,而后经过toString转化为String,期间生成了Stringbuffer和String两个对象,最后赋值给目标String //至关于 (new StringBuilder()).append(s1).append(s2).toString(),String不可更改仍然成立 System.out.println(s3.equals(s2));//true
boolean equals(Object obj) //比较字符串的内容是否相同,区分大小写 boolean equalsIgnoreCase(String str) //比较字符串的内容是否相同,忽略大小写 boolean contains(String str) //判断大字符串中是否包含小字符串 boolean startsWith(String str) //判断字符串是否以某个指定的字符串开头 boolean endsWith(String str) //判断字符串是否以某个指定的字符串结尾 boolean isEmpty() //判断字符串是否为空。
int length() //获取字符串的长度。 char charAt(int index) //获取指定索引位置的字符 int indexOf(int ch) //返回指定字符在此字符串中第一次出现处的索引。 int indexOf(String str) //返回指定字符串在此字符串中第一次出现处的索引。 int indexOf(int ch,int fromIndex) //返回指定字符在此字符串中从指定位置后第一次出现处的索引。 int lastIndexOf(String str,int fromIndex) //返回指定字符串在此字符串中从指定位置后第一次出现处的索引。 String substring(int start) //从指定位置开始截取字符串,默认到末尾。 String substring(int start,int end) //从指定位置开始到指定位置结束截取字符串。
byte[] getBytes() //把字符串转换为字节数组。 char[] toCharArray() //把字符串转换为字符数组。 static String valueOf(char[] chs) //把字符数组转成字符串。 static String valueOf(int i) //把int类型的数据转成字符串。注意:String类的valueOf方法能够把任意类型的数据转成字符串。 String toLowerCase() //把字符串转成小写。 String toUpperCase() //把字符串转成大写。 String concat(String str) //把字符串拼接。
String replace(char old,char new) //替换单个字符 String replace(String old,String new) //替换字符串 String trim() //剔除两侧空格 int compareTo(String str) //字典顺序比较大小 int compareToIgnoreCase(String str) //字典顺序比较大小(忽略大小写)
java.lang.StringBufferapp
StringBuffer是线程安全的可变字符序列,相应的效率较低函数
public StringBuffer() //无参构造方法,默认容量为16 public StringBuffer(int capacity) //指定容量的字符串缓冲区对象 public StringBuffer(String str) //指定字符串内容的字符串缓冲区对象
public int capacity() //查看容量 public int length() //查看长度
public StringBuffer append(String str) //能够把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区自己 public StringBuffer insert(int offset,String str) //在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区自己 public StringBuffer deleteCharAt(int index) //删除指定位置的字符,并返回自己 public StringBuffer delete(int start,int end) //删除从指定位置开始指定位置结束的内容,并返回自己 public StringBuffer replace(int start,int end,String str) //从start开始到end用str替换 public StringBuffer reverse() //字符串反转 public String substring(int start,int end) //截取从指定位置开始到结束位置,包括开始位置,不包括结束位置
java.lang.StringBuilderui
StringBuilder是一个线程非安全的可变序列,效率高线程
方法和StringBuffer基本一致,这里就不过多赘述code
类 | 线程安全 | 效率高 | 可变 |
---|---|---|---|
String | 否 | 是 | 否 |
StringBuffer | 是 | 否 | 是 |
StringBuilder | 否 | 是 | 是 |