Java基础小清单知识(二)
来源:互联网 发布:陈乔恩长相知乎 编辑:程序博客网 时间:2024/04/29 10:14
本文为续二,重点讲述Java基础中的字符串知识
String类的常用方法
- charAt()
- startWith()和endsWith()
- equalsIgnoreCase()
- toCharArray(),valueOf()
- String(char[] value)
- indexOf()方法
length(),切记length是针对数组来说,String是对象所以要用方法
public class StringDemo3 { public static void main(String []args){ String str="abcdef"; System.out.println(str+"的长度 "+str.length()); }}
replace()
public class StringDemo3 { public static void main(String []args){ String str="abcdef"; System.out.println(str+"将其中的ab替换成AB\n"+str.replace("ab","AB")); System.out.println(str+"将其中的a换成A,f换成F\n"+str.replace("a","A").replace("f","F")); }}
split()
substring() ,切记0则是直接返回原对象,非0则是new一个新对象返回
trim()
StringBuffer类
如果需要静态的使用字符串,string类是一个好的选择,但若是需要经常的修改字符串则宜使用StringBuffer类
创建StringBuffer对象
StringBuffer 对象名=new StringBuffer("字符串内容");
没有String类那样可以直接赋值,只能通过new出来,这意味着String Buffer对象位于堆上,而不是常量区。
StringBuffer的方法和String很像,但也有一些小小的不同
- 连接字符串
String可以使用+ ,而 StringBuffer 只能使用append()方法
public class StringDemo3 { public static void main(String []args){ StringBuffer str=new StringBuffer("123"); str.append("abc"); System.out.println(str); }}
insert()
- delete()
deleteCharAt()
- setCharAt()
reverse() ,只有StringBuffer才有的
public class StringDemo5 { public static void main(String []args){ StringBuffer str=new StringBuffer("java"); System.out.println(str.reverse()); }}
StringBuffer是没有重写Object类的equals方法,所以只能通过toString()方法将StringBuffer内容转换为String字符串,再使用equals方法
- capacity()
String Buffer中的容量很有趣,值得好好研究一下。
StringBuffer默认初始容量的字符串缓冲区大小为16字符,但是不同的StringBuffer对象拥有不同的容量,String Buffer类提供了capacity()方法获取对象的容量。
capacity()方法返回的是String Buffer变量的容量(和length()是不一样的),在创建StringBuffer对象时,没有指定容量的大小,系统会默认为16字符的容量,就像str1 一样;
若指定了容量大小,那就是多少,就像str2一样;
若指定容量大小后又修改字符且修改后大于其指定容量,那么修改后的容量大小为:(容量+1)*2 ,就像str3;
若指定容量大小后又修改字符且修改后大于其指定容量也大于修改后的容量大小(容量+1)*2 ,那么容量就等于字符串的长度,如str5,指定是5,修改后为(5+1)*2 =12,依然小于13,故容量直接为13;
若直接使用字符串创建StringBuffer变量,则容量大小为16+字符串长度,如str4;
小结
Java基础知识小清单就到此为止了,本次的重点是为了梳理一直以来模糊不清的String和String Buffer之间的关系,总体来说还是比较完美的,马上就是平安夜了,苹果也已经准备好了,现在就差开吃了,找个时间再写一下年终总结吧,下周估计是没有什么时间了。。。