String类
字符串是一个特殊的对象。
字符串最大的特点:一旦被初始化,就不能被改变。
String s1="abc"; s1是一个类类型变量,"abc"是一个对象。
String s2=new String("abc");
s1在内存中有一个对象,s2在内存中有两个对象。
s1==s2
s1.equals(s2)
Object类中的equals方法比较的是内存地址,String类复写了Object类中的equals方法,该方法用于判断字符串是否相同。
常见功能----判断和获取
1、获取
1.1 获取字符串长度:返回值类型int str.length();
1.2 根据位置获取某个位置上的字符:返回值类型char charAt(int index);
1.3 根据某一位置上的字符获取这个字符的位置:
返回值类型int indexOf(int ch) ;返回的是ch在字符串中第一次出现的位置。以Unicode代码单元表示
返回值类型int indexOf(int ch,int fromIndex); 返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。 如果未出现该字符,则返回 -1。
返回值类型int indexOf(String str);返回指定子字符串在此字符串中第一次出现处的索引。
返回值类型int indexOf(String str,int formIndex);返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。
返回值类型int lastIndexOf(int ch) ;
返回值类型int lastIndexOf(int ch,int fromIndex) ;
返回值类型int lastIndexOf(String str) ;
返回值类型int lastIndexOf(String str,int fromIndex) ;
2、判断
2.1 字符串中是否包含某一个子串 返回值类型boolean contains(str); 当且仅当此字符串包含指定的 str 序列时,返回 true。
2.2 字符串中是否有内容 isEmpty(); 当且仅当 length() 为 0 时返回 true。
2.3 测试此字符串是否以指定的前缀开始。startsWith(String prefix);
2.4 测试此字符串是否以指定的后缀结束。endsWith(String suffix);
2.5 判断字符串内容是否相同 。 equals(str);
2.6 判断字符串内容是否相同并忽略大小写。equalsIgnore(str);
3、转换
3.1 将字符数组转换成字符串 public static String copyValueOf(char[] data)返回指定数组中表示该字符序列的 String。 String.copyValueOf(char[] data);
copyValueOf(char[],offset,count);
static valueOf(char[] data)
valueOf(char[],offset,count);
构造函数 String(char[]) String(char[],offset,count) 例:char[] arr={'a','f','r'} String s=new string(arr);
3.2 将字符串转换成字符数组 toCharArray(str)将此字符串转换为一个新的字符数组。char[] ch=str.toCharArray();
3.3 将字符串转换成字节数组 getBytes() 使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
3.4 将字节数组转换成字符串 构造函数 String(byte[]) String(byte[],offset,count)
3.5 将基本数据类型转换成字符串 sattic valueOf(int); double,float ,long
4、替换
str.replace(char oldChar,char newChar); 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
5、切割
str.split(String sign); sign代表分隔符。也可根据给定正则表达式的匹配拆分此字符串
6、获取子字符串
subString(int beginIndex);
subString(int beginIndex,int endIndex);包含头,不包含尾。
7、大小写转换、去除空格、比较
str.toUpperCase();
str.toLowerCase();
str.trim();
str.equals(String otherstr);
StringBuffer
StringBuffer是字符串缓冲区。
特点:
1、是一个容器。而且长度是可变化的。
2、可以直接操作多个数据类型。
3、最终可以通过toString方法变成字符串。
C creat U update R read D delete
1、存储
返回值类型StringBuffer append():将指定数据作为参数添加到已有数据的结尾处。
StringBuffer insert(index,数据);:可以将数据插入到指定index位置。
2、删除
StringBuffer delete(start,end);删除缓冲区中的数据,包含start,不包含end.
StringBuffer deleteCharAt(index);删除指定位置的字符
清空缓冲区 sb.delete(0,sb.length());
3、获取
返回值类型String substring(int satrt,int end);
4、修改
StringBuffer replace(int start,int end,str);
void setCharAt(int index,char ch)//没有返回值
5、反转
StringBuffer reverse();
JDK1.5版本之后出现了StringBuilder
StringBuffer是线程同步。
StringBuilder线程不同步。
升级三个因素:提高效率、简化书写、提高安全性
|
|