java --經常使用類(String)

#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"));
	}
相關文章
相關標籤/搜索