THE TWENTY-SECOND DAY

    今天星期五,参加培训的第二十二天,一如往常,早上吃了饭就到教室开始看书,然后就没有什么了,今天好像终于把第一本书看完了。

    然后上课,老师继续讲昨天的反射,好像是反射方法了:代码如下:

package am;

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;

public class ReflectMethodMain {

	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		Class<?> o = Class.forName("am.ReflectMethod");
		Constructor<?>[] cons = o.getDeclaredConstructors();
		for(int i=0;i<cons.length;i++) {
			int k= 0;
			String str ="";
			int j= cons[i].getParameterCount();
			if(j==0) {
				
			}else {
			for( ;k<j-1;k++) {
				str+=cons[i].getParameters()[k]+",";
			}
			str+=cons[i].getParameters()[k];
			}
			System.out.println(cons[i].getName()+"("+str+")");
		}
		Object reflectMethod = o.newInstance();
		Method method1 = o.getMethod("exeMethod",Class.forName("java.lang.String"));
		method1.invoke(reflectMethod, "哈哈");
	}

}

对,昨天把那本书年完了,又看了一下课本,反正好多东西,比如,窗口布局有好多种,嗯,别的什么网络什么玩意的一点都没看懂,行吧,算是眼熟一下,然后就是正则表达式了,代码如下:

package pm;

public class ZhengZe {
	//[abc]:表示可能是a,或b或c
	//[^abc]:不是其中一个
	//[a-zA-Z]英文字母
	//[0-9]:数字
	//.:匹配任意字符
	//\d:表示数字
	//\D:非数字
	//\s:表示空字符组成[\t\n\r\x\f]
	//\S:表示非空字符[^\s]
	//\w:表示字母数字下划线
	
	//?:出现0、1次
	//+:出现1、多次
	//*:表示出现0、1、多次
	//{n}出现n次
	//{n,m}n-m次
	//{n,}n n以上
	//XY XY都是表达式
	//X|Y:表示X或Y 
public static void main(String[] args) {
	String s0 = "23:59:59";
	String r0="^([0-1]\\d|2[0-3]):([0-5]\\d):([0-5]\\d)$";
	System.out.println(s0.matches(r0));
	String l0="11112233445";
//	String o0="\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d";
	String o1="^1\\d{10}$";
	System.out.println(l0.matches(o1));
	String s1 = "foof";
	String r1="food|f";
	System.out.println(s1.matches(r1));//false
}
}

然后实现一个不需要优先级的+-*/代码如下:

package pm;

import java.lang.reflect.Method;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.Arrays;
import java.util.Scanner;

public class ReflectArithmetic {

	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
      System.out.println("请输入要计算的表达式:");
      Scanner input = new Scanner(System.in);
      String arithmeticExpression = input.nextLine();
      String[] number;
      number = arithmeticExpression.split("[+/*-]");
      double firstNumber = Double.parseDouble(number[0]);
      String s=arithmeticExpression.replaceAll("[0-9]", "");
      char[] operator = s.toCharArray();
      URL url = new URL("file:///G:/eclipse_workspace/180330/bin/");
      URL[] urls = new URL[]{url};
      URLClassLoader load = new URLClassLoader(urls);
      Class<?> ReflectTest = load.loadClass("pm.Arithmetic");
      Object reflectClass = ReflectTest.newInstance();
      for(int i=0;i<operator.length;i++) {
    	  if(operator[i]=='+') {
    		  Method add = ReflectTest.getMethod("add",double.class,double.class);
    		  firstNumber=(double) add.invoke(reflectClass,firstNumber,Double.parseDouble(number[i+1]));
    	  } else if(operator[i]=='-') {
    		  Method add = ReflectTest.getMethod("subtract",double.class,double.class);
    		  firstNumber=(double) add.invoke(reflectClass,firstNumber,Double.parseDouble(number[i+1]));
    	  } else if(operator[i]=='*') {
    	  Method add = ReflectTest.getMethod("multiply",double.class,double.class);
    	  firstNumber=(double) add.invoke(reflectClass,firstNumber,Double.parseDouble(number[i+1]));
      }  else if(operator[i]=='/') {
    	  Method add = ReflectTest.getMethod("divide",double.class,double.class);
    	  firstNumber=(double) add.invoke(reflectClass,firstNumber,Double.parseDouble(number[i+1]));
      } 
      }
      System.out.println(firstNumber);
//      System.out.println(Arrays.toString(number));
//      System.out.println(s);
	}
}

好了吧,今天还看了一下范型,还有集合框架,又叫数据结构,嗯,总结如下:

set :不重复,list可重复vector安全的arraylist,queue队列先进先出map键值对hashtable安全的hashmap用ConcurrentHashMap代替。

tree排好序的重写comparable自定义排序   linked按插入顺序或修改顺序 排序。

好了,就这样吧,没有什么好说的了,结束 。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值