String s1 = "java";
String s2 = "java";
System.out.println(s1 == s2);// true
// 字符串常量首先在堆里分配空间,如果以后再使用相同的字符串常量,系统不再分配空间。所以s2、s2指向同一对象,当然内容也一样。
String s3 = new String("hello");
String s4 = new String("hello");
System.out.println(s3 == s4);// false
System.out.println(s3.equals(s4));// true
// 每使用一次new就会构造新的对象,s3、s4指向不同的对象,所以引用不同但内容相同。
char c[] = { 'w', 'o', 'r', 'l', 'd' };
String s5 = new String(c);
String s6 = new String(c, 1, 2);
System.out.println(s5);// world
System.out.println(s6);// or
System.out.println(s5.charAt(0));// w
System.out.println(s5.length());// 5
System.out.println(s5.indexOf("or"));// 1
System.out.println(s5.replace("w", "W"));// World
// valueof静态方法
int n = 1234567;
String str = String.valueOf(n);
System.out.println(n + "是" + str.length() + "位数.");
// split方法
String s = "zhang,wang,li";
String[] ss = s.split(",");
for (int i = 0; i < ss.length; i++) {
System.out.println(ss[i]);
}
// 统计大、小写字母和其它字符个数
String a = "abCDeFgHi,jk9l8mn(OP).!#xyZ";
int lCount = 0, uCount = 0, oCount = 0;
for (int i = 0; i < a.length(); i++) {
char ch = a.charAt(i);
if (ch >= 'a' && ch <= 'z') {
lCount++;
} else if (ch >= 'A' && ch <= 'Z') {
uCount++;
} else {
oCount++;
}
}
System.out.println("Lower:"+lCount+",Upper:"+uCount+",Other:"+oCount);