Java中的String,StringBuffer,StringBuilder

String

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对象

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)
//字典顺序比较大小(忽略大小写)

StringBuffer

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)
//截取从指定位置开始到结束位置,包括开始位置,不包括结束位置

StringBuilder

java.lang.StringBuilderui

StringBuilder是一个线程非安全的可变序列,效率高线程

方法和StringBuffer基本一致,这里就不过多赘述code

String,StringBuffer,StringBuilder对比

线程安全 效率高 可变
String
StringBuffer
StringBuilder
相关文章
相关标签/搜索