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);
	}

}

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