#1.String
字符串採用unicode編碼,一個字符佔兩個字節。正則表達式
public class TestString { /** * String:它表示不可變的字符序列,底層使用char[]存放元素 * String是finall;即不可重複對一個String變量賦值 */ public static void main(String[] args) { String str1 = "panDa"; String str2 = "panDa"; String str3 = new String("panDa"); String str4 = "panDa"+"laoLi"; String str5 = "laoLi"; String str6 = str1+str5; String str7 = "tiantian"; str7 = str7 + "kaixin"; String str8 = "panDalaoLi"; /** * str1的"panDa"存放在字符串常量池中,對應一個地址(假設0x1234),地址存放在棧中 * str2先去常量池找"panDa",有的話,直接使用地址(0x1234),沒有的話,新建一個地址 * str3:new表示在堆中開闢一個新的區間,區間地址(假設0x1235),地址存放在棧中, * 同時該區間對應一個常量值"panDa",常量值存放在常量池中,常量值對應的地址(0x1234) * 所以,new String("panDa")表示新建了兩個對象,對象1的地址0x1234,對象2的地址0x1235 * 因此查找str3對應的值的時候,1.先找區間地址(0x1235),再找值地址(0x1234) * ==:比較地址值 * equals:比較內容值 */ //true(0x1234 == 0x1234) System.out.println(str1 == str2); //false(0x1234 != 0x1235) System.out.println(str1 == str3); //true("panDa == panDa") System.out.println(str1.equals(str3)); //str4表示的是"panDalaoLi"對應的地址值 //str6表示的是str1的地址值與str5的地址值相加 System.out.println(str4 == str6); //true(str4與str6對應的值是同樣的) System.out.println(str4.equals(str6)); //true(sr4與str8對應的常量池地址值是同樣的) System.out.println(str4 == str8); //str7 = str7 + "kaixin"; /** * str7="tiantian",同str1 * str7 = str7 + "kaixin",在常量池中從新開闢一個區間,即從新有個地址值 */ Car car1 = new Car("audi"); Car car2 = new Car("audi"); System.out.println(car1); System.out.println(car2); //false(很明顯這是new了兩個地址) System.out.println(car1 == car2); //false(car1與car對應的是兩個地址值,由於沒有重寫hashcode與equals方法) System.out.println(car1.equals(car2)); //true(兩個對象屬性的地址是同樣的) System.out.println(car1.brand == car2.brand); //true(兩個對象的屬性值是同樣的) System.out.println(car1.brand.equals(car2.brand)); } } class Car{ String brand; public String getBrand() { return brand; } public void setBrand(String brand) { this.brand = brand; } //構造函數 public Car(String brand) { super(); this.brand = brand; } }
#2.String經常使用方法數組
public static void main(String[] args) { String str1 = "abcdefgabd2345"; String str2 = "abcd"; //返回字符串的長度 System.out.println(str1.length()); //返回指定位置的字符 System.out.println(str1.charAt(3)); //比較兩個字符串的值是否相等 System.out.println(str1.equals(str2)); //返回形參在字符串中首次出現的位置 System.out.println(str1.indexOf("de")); //返回形參在字符串中最後一次出現的位置 System.out.println(str1.lastIndexOf("ab")); //截取字符串,從第3個位置開始截取 System.out.println(str1.substring(3)); //截取字符串片斷,從2開始(包含)到5結束(不包含) System.out.println(str1.substring(2, 5)); //字符/字符串替換 System.out.println(str1.replace("ga", "ll")); //字符串替換,基於正則表達式 System.out.println(str1.replaceAll("\\d", "z")); //去除字符串首尾空格 System.out.println(str1.trim()); //字符串拼接 System.out.println(str1.concat("zzz")); //字符串分隔符,返回字符串數組 System.out.println(str1.split("a")); }