1.String 类的概述: 字符串是一个特殊的对象,最大的特点是一旦初始化就不可以被改变。 public static void main(String[]args){ String str="abc"; //str是一个类类型变量,"abc"是一个对象 String str1=new String("abc"); // System.out.println("str==str1"); System.out.println("str.equals(str1)");
} 输出的结果是false和true
结果分析:后者为true的原因是因为String 类复写了Object类中equals方法,该方法用于判断字符串是否相同。
以上两者的区别在于str在内存中有一个对象,str1在内存中有俩个对象。
2.String判断的方法:
2.1 字符串中是否包含某一个子串 boolean contains(str): 特殊之处:indexOf(str):可以索引str第一次出现的位置,如果返回-1,表示该str不在字符串中存在 所以,也可以用于对指定判断是否包含,该方法即可以判断,有可以获取出现的位置, 2.2 字符串中是否有内容 boolean isEmpty():原理即判断字符串的长度是否为零
2.3 字符串是否以指定内容开头 boolean startsWith(str);
2.4 字符串是否以指定内容结尾 boolean endsWith(str);
2.5 判断字符串内容是否相同,复写了Object类中的equals方法 boolean equals(str); 2.6 判断内容是否相同,并忽略大小写 boolean equalsIgnoreCase(str);
3.字符串的转换 3.1 将字符数组转为字符串 构造函数:String(char[]) String(char[],offset.count):将字符数组中的一部分转成字符串 静态方法:Static String copyValueOf(char[]); Static String copyValueOf(char[] data,int offset,int count); Static String valueOf(char[]); 例如:char []arr={'a','b','c','d','e','f''}; String s=new String(arr); String s=new String(arr,1,3); 输出结果是abcdef和bcd 3.2 将字符串转为字符数组 char[] toCharArray(); 3.3 将字节数组转为字符串 String(byte[]) String(byte[],offset.count):将字节数组中的一部分转成字符串 3.4 将字符串转为字字节数组 byte[] getBytes();
3.5 将字符数组转为字符串 static String valueOf(int); static String valueOf(double);
4.字符串的替换 常用方法 String replace(oldchar,newchar); 例如:String s="hello java"; String s1=s.replace("java","world"); System.Out.println(s); System.Out.println(s1); 输出结果是hello java hello world 5.字符串的切割 String [] split(regex); 例如:String s="zhangsan,lisi,wangwu"; String [] arr=s.split(","); for(int i=0;i<arr.length;i++){ System.Out.println(arr[i]); } 输出结果为:zhangsan lisi wangwu6.字符串的字串 String substring(begin); String substring(begin,end); 例如:String s="abcdef"; System.Out.println(2);//从指定位置开始到结尾,如果角标不存在,会出现字符串角标越界异常。 System.Out.println(2,4);//包含头,不包含尾 输出结果为:cdef cd 7.转换,去除空格,比较 7-1 将字符串转成大写或小写 String toUpperCase(); String toLowerCase(); 7-2 将字符串两端的多个空格去除 String trim(); 7-3 对两个字符串进行自然顺序的比较 int compareTo(String); 8.StringBuffer与StringBuilder
String是不可变类,一旦String对象被创建,包含在对象中的字符序列是不可变的,直到对象被销毁;
StringBuffer 与 StringBuilder对象则是可变的!
举例说明这两个的好处:(不用每次新建对象,效率高!)
publicclass Demo22 {
publicstaticvoid main(String[] args) {
String s = "";
long begintime = System.currentTimeMillis();
for(int i = 1;i <= 100000;i++){
s += i;
}
long endtime = System.currentTimeMillis();
long time = endtime - begintime;
System.out.println("运行时间为:"+time);
StringBuffer s1 = new StringBuffer();
s = "";
begintime = System.currentTimeMillis();
for(int i = 1;i <= 100000;i++){
s = ""+i;
s1 = new StringBuffer(s);
}
endtime = System.currentTimeMillis();
time = endtime - begintime;
System.out.println("运行时间为:"+time);
}
}
输出:
运行时间为:82922
运行时间为:15
可以看得出:StringBuffer这两个效率相当高!
StringBuffer: 是线程安全的;
StringBuilder:是线程不安全的,性能高点,推荐使StringBuilder;(jdk1.5出现)
StringBuffer的字符序列是可变的(通过append等方法操作)
StringBuffer 和 String之间的转换;
String toString()返回此序列中数据的字符串表示形式。
StringBuffer(String str):以指定的字符串创建StringBuffer对象。
StringBuffer方法
public StringBuilder()构造一个不带任何字符的StringBuilder对象。
StringBuffer(String str):构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。
StringBuffer append(Object o):将指定的任意类型对象追加到此StringBuffer对象。
StringBuffer insert(int offset, Object o) :将任意类型参数的字符串表示形式插入此序列中。
StringBuffer delete(int start, int end) :移除此序列的子字符串中的字符。
StringBuffer deleteCharAt(int index):移除此序列指定位置的 char。
Eg:
package reviewDemo;
/**
* 用StringBuilder或StringBuffer:
把字符串“ABCDE”;
转变成字符串“A,B,C,D”
*/
publicclass Demo23 {
publicstaticvoid main(String[] args) {
//第一种方法:往里面插入;
StringBuilder sb = new StringBuilder("ABCDE");
sb.deleteCharAt(sb.length()-1);
System.out.println(sb);
for (int i = 0; i < sb.length(); i+=2) {
sb.insert(i, ",");
}
sb.deleteCharAt(0);
System.out.println(sb);
//第二种方法:往里面追加,要追加必须遍历,必须换为数组!
sb = new StringBuilder("ABCDE");
sb.deleteCharAt(sb.length()-1);
System.out.println(sb);
char []cs = sb.toString().toCharArray();
StringBuilder sb1 = new StringBuilder();
for (char c : cs) {
sb1.append(c).append(",");
}
sb1.deleteCharAt(sb1.length()-1);
System.out.println(sb1);
}
}
package reviewDemo;
/**
* 编写一个程序,
* 这个程序把一个整数数组中的每个元素用逗号连接成一个字符串,
* 例如,根据内容为{1,2,3}的数组形成内容为"1,2,3"的字符串。
*/
publicclass Demo24 {
publicstaticvoid main(String[] args) {
int []i = {1,2,3,4,5};
StringBuilder sb = new StringBuilder();
for (int j : i) {
sb.append(j).append(",");
}
sb.deleteCharAt(sb.length()-1);
System.out.println(sb);
}
}
------- android培训、java培训、期待与您交流! ----------