一、基本数据类型与字符串之间的转换(1)基本数据类型转字符串
1>基本数据类型+””
2>利用String类中的静态方法valueOf(基本数据类型值)
3>利用基本数据类型包装类中的方法toString()来获取其字符串表现形式。
(2)字符串转基本数据类型
1>在基本数据类型包装类中都有一个静态方法ParseXxx(Stringstr)方法。比如Integer中有parseInt(Stringstr)方法,这个方法返回值为int类型,Double中有parseDouble(Stringstr)此方法返回值为double类型,也就是:Integer.parseXxx(“xxx类型的字符串”)
注意点是在Character中没有此方法,因为字符串本就是字符组成的,所以不需要。如果字符串被基本数据类型进行了对象的封装,那么我们可以用非静态的方法xxxvalue()来完成字符串转基本数据类型。例:
Booleanbl=newBoolean(\"true\");
booleanx=bl.booleanValue();
二、对那些安全敏感的信息,为什么用char]存储要优于String?String是不可变的,这就意味着它一旦被创建,就将永久驻留在内存中,直到垃圾回收器将其回收为止。然而用数组存储方式,你可以明确地改变数组中的元素,因此用数组方式,安全信息将有可能不存在系统内存的任何地方。
三、查找字符串中某个位置的字符
publiccharcharAt(intindex);//返回指定索引index位置上的字符,索引范围从0开始
四、如何用空格字符来分割字符串?我们可以很方便地用正则表达式来分割字符串,”s”表示空格字符,比如”“,“t”,“r”,“n”
String]strArray=aString.split(\"s+\");
五、String、StringBuilder和StringBuffer哪个更优?String和StringBuilder:StringBuilder是可变的,也就是说用StringBuilder创建的字符串你可以随时改变它。StringBuilder和StringBuffer:StringBuffer是同步的,它是线程安全(thread-safe)的,但效率要比StringBuilder差得多。
六、查找指定字符串在字符串中第一次或最后一词出现的位置
在String类中提供了两种查找指定位置的字符串第一次出现的位置的方法
(1)publicintindexOf(Stringstr);//从字符串开始检索str,并返回第一次出现的位置,未出现返回-1
(2)publicintindexOf(Stringstr,intfromIndex);//从字符串的第fromIndex个字符开始检索str
查找最后一次出现的位置有两种方法
(1)publicintlastIndexOf(Stringstr);
(2)publicintlastIndexOf(Stringstr,intfromIndex);
如果不关心字符串的确切位置则可使用publicbooleancontains(CharSequences);
七、如何统计指定字符在字符串中出现的频率同样我们利用了Apache公共语言库中的StringUtils,代码如下:
intn=StringUtils.countMatches(\"11112222\\"1\");
System.out.println(n);
八、检查字符串的起始字符和结束字符
开始的字符串两种方法
(1)publicbooleanstarWith(Stringprefix,inttoffset);//如果参数prefix表示的字符串序列是该对象从索引toffset处开始的子字符串,则返回true
(2)publicbooleanstarWith(Stringprefix);
结束的字符串方法
publicbooleanendsWith(Stringsuffix);
九、字符串的替换
两种方法
(1)publicStringreplace(charoldChar,charnewChar);
(2)publicStringreplace(CharSequencetarget,CharSequencereplacement);//把原来的etarget子序列替换为replacement序列,返回新串
(3)publicStringreplaceAll(Stringregex,Stringreplacement);//用正则表达式实现对字符串的匹配
十、StringBuffer的功能(1)存储
1>append(数据)
Append()可以接收各种数据类型,除了byte和short,但是int可以替代两者,此类方法返回的还是本类对象,因为StringBuffer是可以被改变的,无需像String一样返回一个新的字符串。
2>inset(intoffset,数据)
此方法依旧是在本类对象中修改,offset指定是在此位置插入后面的数据。
(2)删除
1>delete(intstart,intend)
返回本类对象,删除从start到end-1位置上的字符(包头不包尾)。
2>deleteCharAt(intindex)
返回本类对象,删除指定位置index上的字符。
(3)获取
1>substring(intstart,intend)
返回的String类型,不是StringBuffer,依旧是截取从Strart到end-1这段字符串。
2>chatAt(intindex)
返回字符类型,根据指定位置查找该位上的字符
3>indexOf(Stringstr)
返回int类型,获取子串str在缓冲区中的起始位置
4>lastIndexOf(Stringstr)
返回int类型,获取子串最后一次出现在缓冲区中的具体位置
(4)修改
1>replace(intstart,intend,Stringstr)
返回本类对象,将从start到end-1的这段字符串替换成str。
2>setCharAt(intindex,charch)
无返回值,将指定位置index上的元素替换为ch。
(5)反转
reverse()
返回本类对象,将缓冲区中的内容反转过来。