/**
* Created by test on 2017/7/6.
*/
public class StringTest {
public static void main(String[] args){
String s1 = new String(); // 空构造函数
String s2 = new String("hello"); // String参数生成一个字符串
//String s3 = new String(char tmp[]);
// 1. 字符串的内容一旦被创建就不可改变,只是改变了s3的引用,test1的内容没变!
String s3 = "test1";
s3 = "test2";
System.out.println("s3:" + s3);
// 2. s4 = s1 + s2,但和s3不等!!(可通过intern()方法判断是否包括了相同的String对象)
String str1 = "fly";
String str2 = "weight";
String str3 = "flyweight";
String str4 = null;
str4 = str1 + str2;
// 如果字符串1和字符串2通过+连接产生的对象时test3指向的,那么表示字符串是可变的!
System.out.println(str3 == str4);
// 如果不是str3表示的字符串,那么表示两个连接后产生了新的字符串对象。用str4来指定
str4 = (str1 + str2).intern();
// 要想str3和str4值向同一个对象就可以通过.intern()这个方法来达到
System.out.println(str3 == str4);*/
// 3. length(), 一个汉字算一个字符
String s1 = "我爱大北京"; // 一个汉字算一个字符
String s2 = "abcde";
System.out.println(s1.length());
System.out.println(s2.length());
//4. charAt(),返回所在索引位置的字符,索引从0开始算
String s1 = "我爱大北京"; // 一个汉字算一个字符
String s2 = "abcde";
System.out.println(s1.charAt(3));
System.out.println(s2.charAt(2));
//5.equals方法,equalsIgnoreCase方法
String tom = new String("we are students");
String jick = new String("We are students");
String jerry = new String("we are students");
System.out.println(tom.equals(jick));
System.out.println(tom.equals(jerry));
// 6. equals和“==”,==可用于基本类型的比较,如果用于引用对象则表明是否指向同一个对象!
// equals一般用于对象的比较
String str1 = new String("caterpillar");
String str2 = new String("caterpillar");
System.out.println(str1 == str2);
System.out.println(str1.equals(str2));// str1和str2所对应的字符串内容一样
//7.compareTo和compareToIgnoreCase方法,是按照字典顺序与参数s进行比较;
String s1 = "tjitcast";
String s2 = "csdn";
String s3 = new String("csdn");
System.out.println(s1.compareTo(s2));// s1 > s2,取值为正
System.out.println(s3.compareTo(s2)); // 内容相等,取值为零
// 8. indexOf,进行字符串搜索,搜索不到则返回为-1
String s1 = "北京海淀区昌平区朝阳区西城区";
System.out.println(s1.indexOf("区")); // 返回首次出现的位置,如果没有找到则返回为-1
System.out.println(s1.indexOf("的"));
System.out.println(s1.indexOf("区", 5)); //从指定位置进行搜索
System.out.println(s1.lastIndexOf("区")); //最后一次出现的位置
System.out.println(s1.lastIndexOf("区", 12)); //查找12位置之前最后一次出现的位置
// 9. startsWith, endsWith,是否以指定的前缀或者后缀开始或者结束
String tom = "229402-432-43345345";
String jerry = "99099009009023232301";
System.out.println(tom.startsWith("229"));
System.out.println(jerry.endsWith("4301"));
//10. regionMatches方法
// regionMatches(int firstStart, String other, int otherStart, int length)
// 当前字符串从firstStart位置截取长度为length字符串,与字符串other,从otherStart位置截取length字符串进行比较;
String s1 = "北京aaaaaaaa";
String s2 = "天津aaaaaaaa";
System.out.println(s1.regionMatches(2, s2, 2, 8));
// 11. 字符串修改 substring,进行字符串截取,但不改变原来字符串内容
String s1 = "北京海淀区昌平区";
System.out.println(s1.substring(2));
System.out.println(s1.substring(2, 5));
// 12. replace()进行字符串替换(所有出现的都进行替换)
String s1 = "mesquite in your cellar".replace('e', 'o');
System.out.println("s1: " + s1);
String s2 = "the war of baronets".replace('r', 'y');
System.out.println("s2: " + s2);
String s4 = "JonL";
System.out.println(s4.replace('o', 'g'));
System.out.println("s4: " + s4);
//13 . trim()去掉开始、结束的空格
String s1 = " my name is xmh ";
System.out.println(s1);
System.out.println(s1.trim());
//14. concat方法,将指定字符串连接到此字符串的结尾,返回的的字符串为新创建的String对象
String s1 = "cares";
s1.concat("1");
System.out.println("s1 : " + s1);
// 15. split方法:根据给定的正则表达式的匹配来拆分此字符串
String[] fakeFileData = {
"justin\t64/5/26\t0939002302\t5433343",
"momor\t68/7/23\t0939100391\t5432343"
};
for(String data : fakeFileData){
String[] tokens = data.split("\t");
//\t为字符串的分割符号
for(String token : tokens){
System.out.print(token + ",");
}
System.out.println();
}
//16. 转换为整型
int x;
String s = "6542";
x = Integer.parseInt(s);
System.out.println("x: " + x);
float n = Float.parseFloat(s);
System.out.println("n: " + n);
// 17. 将字符串中的字符复制到字符数组
String s1 = "mynameisxmh";
char[] temp = new char[6];
s1.getChars(2, 8, temp, 0);
for(char r : temp){
System.out.println("r: " + r);
}
}
}