------- android培训、java培训、期待与您交流! ---------
String的两种实例化方式:
方式1:
String s1 = "abc"; //s1是一个类类型变量,"abc"是一个对象
//字符串最大的特点:String一旦初始化就不可以改变
方式2:
String s2 = new String("abc");
两者的区别:
方式1:代表一个对象
方式2:s2有两个对象 new 是一个对象 "abc"是一个对象
String对Object类中的equals()方法进行了重写:
equals
public boolean equals(Object anObject)
-
将此字符串与指定的对象比较。当且仅当该参数不为
null
,并且是与此对象表示相同字符序列的String
对象时,结果才为true
。
字符串的比较:
package String;
/**
* @param args
*/
public class StringDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
String s1 = "abc"; //s1是一个类类型变量,"abc"是一个对象
//字符串最大的特点:String一旦初始化就不可以改变
String s2 = new String("abc");
//s1和s2的区别,
//s1代表一个对象
//s2有两个对象 new 是一个对象 "abc"是一个对象
String s3 = "abc";//已经存在了所以不再创建,指向同一个对象
System.out.println(s1 == s2); //两个不是同一个对象
System.out.println(s1.equals(s2)); //equals比较内存的地址,equals被String类复写了。该方法判断字符串是否相同
System.out.println(s1 == s3);
}
}
StringBuffer:
StringBuffer是字符串缓冲区,
是一个容器,可以操作多种数据类型,最终通过toString方法变成字符串
1.存储
StringBuffer append() 将指定的数据作为参数添加到已有数据的结尾处
StringBuffer insert(index,数据);可以将数据插入到指定index位置
2.删除
StringBuffer delete(start,end)包含头,不包含尾
StringBuffer deleteCharAt(index)指定位置的字符
3.获取
char charAt()
int indexOf()
int lastIndexOf()字符串最后出现的位置
int length
String substring(int start,int end)
4.修改
StringBuffer replace(int start,int end,string str) str指定字符串
替换字符 void setcharAt(int index,char ch);
5.反转
StringBuffer reverse()
6将缓冲区的指定数据存储到指定数组中
void getChars()
在操作大量字符串时,我们常用StringBuffer来操作,因为StringBuffer在在同一块内存总操作字符串,更加的高效。
String s1 = "a" + "b" + "c";
String s2 = new StringBuffer().append("a").append("b").append("c").toString();
//s1 等同于s2
StringBuffer的长度是动态的
StringBuffer的常用方法:
1.追加字符串
public StringBuffer append(String str)
-
将指定的字符串追加到此字符序列。
public char charAt(int index)
public StringBuffer delete(int start, int end)4.插入字符串
public StringBuffer insert(int offset, char c)StringBuffer没有实现字符串的分割和equals方法。
StringBuilder和StringBuffer类似,
StringBuilder在多线程中是不安全的多线程中使用StringBuffer