java自學之路-----反射機制 正則表達式

反射機制{

定義:運行狀態,對任意的一個類,都能知道所有的屬性和方法。對於任意的對象,都能調用方法和屬性。動態獲取類中的信息


獲取類的字節碼對象:

1.Object中的getClass()方法,返回類的字節碼文件對象,弊端:要明確具體的類,並創建對象

2.任何數據類型都具備一個靜態屬性,即 類名.class來獲取對應的class對象,相對比較簡單,弊端還是需要明確用到類。

3.通過給定的字符串名稱,就可以獲取該類,即  Class.forName(“類的全稱包括包名”)


使用:

//獲取類名
		String name = "reflect.test.Person";
		//使用方法獲取類的字節碼文件對象,有可能拋出沒有與類名對應的類
		Class cla = Class.forName(name);
		//使用Class的方法,創建新對象
		Object ob = cla.newInstance();
		//使用方法獲取類的構造函數,返回構造函數對象,再使用此對象創建對象
		Constructor<Person> con = cla.getConstructor(String.class, int.class);
		con.newInstance("asf", 20);
		//使用方法獲取類的屬性
		Field f = cla.getDeclaredField("age");//只能獲取本類,包括私有
		f.setAccessible(true);//取消私有訪問檢查,即可以訪問私有屬性
		f.set(ob, 32);//設置屬性值,需要指定對象,以及值
		Object o = f.get(ob);//獲取該對象的該屬性
		System.out.println(o);
		//獲取類的方法
		Method m = cla.getMethod("show", null);//空參數方法
		m.invoke(ob, null);//運行該空參數的方法
//		m = cla.getDeclaredMethod("paramMethod", String.class, int.class);獲取帶參數的方法
//		m.invoke(ob, "小強", 65);

}


正則表達式{

定義:用於操作字符串數據的通過一些特定符號體現的規則,操作簡單,閱讀性變差了


練習

public static void main(String[] args){
		//定義一個字符串
//		String str= "5135";
//		//定義規則
//		String regex = "[1-9][0-9]+";
//		//判斷字符串是否符合規則
//		boolean b = str.matches(regex);
//		System.out.println(b);
//		test_1();
		//對ip地址排序
		test_2();
	}

	private static void test_2() {
		String ip_str = "192.168.10.34  127.0.0.1  3.3.3.3  105.70.11.55";
		ip_str = ip_str.replaceAll("(\\d+)", "00$1");
		System.out.println(ip_str);
		
		ip_str = ip_str.replaceAll("0*(\\d{3})", "$1");
		System.out.println(ip_str);
		
		String[] str = ip_str.split("( )+");
		TreeSet t = new TreeSet();
		for(int i=0; i<str.length; i++)
			t.add(str[i]);
		System.out.println(t);
		ip_str = ip_str.replaceAll("0*(\\d)", "$1");
		System.out.println(ip_str);
	}
	private static void test_1() {
		String str = "我我..我我...我我我要.要要要要...要要要要..學學學學學...學學編編...編編編編..編..程程...程程...程程程";
		//將多餘的子去除
		str  = str.replaceAll("\\.+", "");
		System.out.println(str);
		str = str.replaceAll("(.)\\1+", "$1");
		System.out.println(str);
	}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章