黑马程序员技术交流社区
标题: String类 StringBuffer StringBulider类 总结 [打印本页]
作者: 李培根 时间: 2012-12-8 15:10
标题: String类 StringBuffer StringBulider类 总结
String类:
字符串是一个特殊的对象。
字符串一旦初始化就不可以被改变。
String str = "abc";//"abc"存储在字符串常量池中。
池中没有就建立,池中有直接用。
String s1 = "abc";//在常量池中创建一个对象
String s2 = new String("abc");//在堆内存中创建两个对象,一个new一个,一个字符串对象。
System.out.println(s==s1);true
System.out.println(s==s2);false
System.out.println(s.equals(s2));true String类覆写了Object中的equals方法建立了String类自己的判断对象是否相同的依据。
构造函数:
1.String s = new String();
2.byte[] arr = {97,66,67,68};
String s = new String(arr);
System,out.println("s="+S);//打印结果:s=aBC
3.char[] arr = {'w','a','p','q,','x'};
String s = new String(arr);
System.out.println("s="s);//打印结果:s=wapqx
4.char[] arr ={w,a,p,q,x};
String s = new String(arr,1,3);//从1开始取3个。
System.out.println("s="s);//打印结果:s=apq
-----------------------------------------------------
String类 :常见功能
1.获取
1.1获取字符串中字符的个数(长度)
int length();
1.2根据位置获取字符。
char charAt(int index);
1.3根据字符获取位置,返回第一次出现的位置。(必须会)
int indexOf(int ch);
int indexOf(int ch,int fromIndex);从指定位置开始索引,返回第一次出现的位置。
int indexOf(String str);
int indexOf(String str,int fromIndex);
int lastIndexOf(int ch);
int lastIndexOf(int ch,int fromIndex);
int lastIndexOf(String str);
int lastIndexOf(String str,int fromIndex);
1.4获取字符串中一部分字符串。也叫子串。
String substring(int beginIndex,int endIndex);
String substring(int beginIndex);
返回一个新的字符串,从指定的beginIndex开始,直到索引endIndex-1处结束。
包含begin不包含end
2.转换
2.1将字符换变成字符串数组。
String[] split(String regex);涉及到正则表达式。
例: String s = "张三,李四,王五";
String[] arr = s.split(",");
2.2将字符变成字符数组。
char[] toCharArray();
2.3将字符串变成字节数组。
byte[] getBytes();
2.4将字符串中的字母转成大小写。
String toUpperCase();
String toLowerCase();
2.5将字符串中的内容进行替换。
String replace(char oldChar,char newChar);
String replace(String s1,String s2);
2.6将字符串两端的空格去除。(开发中非常有用)
String trim();
2.7将字符串进行连接。
String conat(String);
System.out.println("abc".concat("kk"));
System.out.println("abc"+"kk");//等效
2.8
System.out.println(String.valueOf(4)+1);
System.out.println(""+4+1);//等效
3.判断
3.1两个字符串内容是否相同。
boolean equals(Object obj);
boolean equalsIgnoreCase(string str);//忽略大小写进行比较。
例:String s = "abc";
System.out.println(s.equals("ABC".toLowerCase()));
System.out.println(s.equalsIgnoreCase("ABC"));
3.2字符串中是否包含指定字符串。
boolean contains(string str);
3.3字符串是否以指定字符串开头,是否以指定字符串结尾。
boolean startsWith(string);
boolean endsWith(string);
4.比较: compareTo();
int compareTo(String anotherString)
System.out.println("a".compareTo("b"));//-1
System.out.println("a".compareTo("A"));//32
System.out.println("abc".compareTo("bcd"));//-1
5.intern();对字符串池进行操作的。(开发一般不用。)
String s1 = new String("abc");
String s2 = s1.intern();//池中有就使用,池中没有就建立。
System.out.println(s1==s2);//false
通过new创建不在常量池中。
-----------------------------------------------------
StringBuffer:就是字符串缓冲区。
用于存储数据的容器。
特点:
1.长度可变。
2.可以存储不同类型数据。
3.最终要转成字符串进行使用。
4.可以对字符串进行修改。
既然是一个容器对象。应该具备什么功能呢?
1.添加:
StringBuffer append(data); short和byte不能添加。
StringBuffer insert(index,data);
2.删除:
StringBuffer delete(start,end):包含头不包含尾。
StringBuffer deleteCharAt(int index):删除指定位置的元素。
清空缓冲区。缓冲区还在。
sb.delete(0,sb.length());
3.查找。
charAt(index);
int indexOf(string);
int lastIndexOf(string);
4.修改
StringBuffer replace(start,end,string);
void setCharAt(index,char);
增删改查;CURD create update read delete
设置长度:setLength(int);
反转:reverse();
StringBuffer--可变长度数组:
数组是固定长度的。
可变长度原理:会创建新数组,复制原数组内容到新数组。
-------------------------------------------------
StringBulider:JDK1.5之后出现,线程不同步,效率更高。
功能用法和StringBuffer一样。
Stringbuffferx线程是同步的。通常用于多线程。
StringBulider线程不同步。通常用于单线程,他的出现提高效率。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |