特点:字符串是常量,它们不能创建后被改变。原因是在源码的定义中是这样的:
public final class String{ /** The value is used for character storage. */ private final char value[]; }
从这里可以看出:String这个类被定义成了final类,存储字符串的数组也被定义成了常量。所以才造成了它的这个特点。
构造方法:构造方法有两种,一种是:String(char[] value) 一种是String(String original) ,这种构造我们经常用,它的简写是 String s="aaa"
常用方法:String的方法非常多,下面是它常用的:
验证:
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Scanner;
public class Test2_String {
public static void main(String[] args) {
//创建对象--触发构造函数
// String(char[] value)
char[] value= {'a','b','c','d'};
String s=new String(value);
// String(String original)
String s2="xiaoming";
//方法测试
System.out.println(s2.charAt(2));
System.out.println(s2.concat("jack"));
System.out.println(s2.endsWith("happy"));
System.out.println(s2.equals("abcdef"));
System.out.println(s2.indexOf("a"));
System.out.println(s2.lastIndexOf("i"));
System.out.println(s2.isEmpty());
System.out.println(s2.length());
System.out.println(s2.replace("a", "b"));
System.out.println(s2.startsWith("abc"));
System.out.println(s2.substring(3));
System.out.println(s2.substring(3,6));
System.out.println(s2.toUpperCase());
System.out.println(s2.trim());
byte[] bs=s2.getBytes();//把字符串中的数据存入byte里,
System.out.println(Arrays.toString(bs));
s2="0s0d0fg0g";
String[] ss=s2.split("0");
System.out.println(Arrays.toString(ss));
System.out.println(String.valueOf(123)+456);
// 接收键盘输入的每个字符串然后打印出来----遍历字符串
Scanner scan=new Scanner(System.in);
String str=scan.nextLine();
for (int i = 0; i < str.length(); i++) {
System.out.println(str.charAt(i));
}
}
}
结果:
工具类:StringBuffer 和StringBulider,这两个类是用来做字符串的拼接用的,由于通过“+”来进行拼接需要的时间很长,于是这里用到了StringBuffer 和StringBulider,他们的用法相同。调用它们的append方法,可以加快效率。下面进行测验:
测试:
public class Test3_StringBuilder {
public static void main(String[] args) {
method();
// method2();
}
private static void method2() {
// TODO Auto-generated method stub
String s="abcdefghijklmnopqrstuvwxyz";
String aa="";
long start=System.currentTimeMillis();
for (int i = 0; i <10000; i++) {
StringBuffer sb=new StringBuffer();
sb.append(s);
}
long end=System.currentTimeMillis();
System.out.println(end-start);
}
private static void method() {
// TODO Auto-generated method stub
//1:把指定字符串拼接一千次,并打印结果
String s="abcdefghijklmnopqrstuvwxyz";
String aa="";
long start=System.currentTimeMillis();
for (int i = 0; i <10000; i++) {
aa=aa+s;
}
long end=System.currentTimeMillis();
System.out.println(end-start);//168497
}
}
结果:
如果用method2,那么结果是4.
可以看出这个工具类的效果十分强大。