您好,欢迎访问三七文档
当前位置:首页 > 金融/证券 > 综合/其它 > java经典编程事例
经典编程小事例反射与正则1.给一个ArrayListInteger集合中添加一个字符串数据,并显示*思路:1,获取这个集合的字节码对象然后通过Class对象获取该集合对象.*2.再用Class对象获取集合的add方法对象Method*3.再把class对象与添加的字符串当参数传给Method的方法invoke.importjava.lang.reflect.Method;importjava.util.ArrayList;importjava.util.List;publicclassTest{publicstaticvoidmain(String[]args)throwsException{ListIntegerlist=newArrayListInteger();Class?cls=list.getClass();ArrayListIntegerobj=(ArrayList)cls.newInstance();Methodmt=cls.getMethod(add,Object.class);mt.invoke(obj,String);//obj.add(String);这样则无法编译通过System.out.println(obj);}}2.通过配置文件运行类中的方法importjava.io.FileInputStream;importjava.lang.reflect.Method;importjava.util.Properties;/**思路:*1,先将文件写入字节流,然后将字节流写入Properties集合中*2,通过getProperties方法获取方法名和类名*3,再通过类名获取其class对象*4.通过对象和方法名获取其方法*/publicclassTest{publicstaticvoidmain(String[]args)throwsException{FileInputStreamfile=newFileInputStream(Show.txt);Propertiespro=newProperties();pro.load(file);file.close();//通过键值对获取对应的类名和方法名StringclassName=pro.getProperty(className);StringmethodName=pro.getProperty(methodName);//通过反射获得字节码对象和方法对象Class?cls=Class.forName(className);Objectobj=cls.newInstance();Methodmt=cls.getMethod(methodName,null);//方法一定要公用public//如果是getDeclaredMethod,则也可以获取非公有方法//如果方法私用,那么要先暴力破解:mt.setAccessible(true);mt.invoke(obj,null);}}3.随即输入QQ号:校验QQ号码:不能以0开头是5-15位的数字importjava.util.Scanner;**思路:用正则定义规范,再用String类的匹配方法match方法判断时否正确publicclassTest{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);Stringqq=sc.nextLine();Stringsegex=[^0][0-9]{4,14};booleanflag=qq.matches(segex);if(flag){System.out.println(qq);}else{System.out.println(输入格式错误);}4.邮件校验//Stringregex=[a-zA-Z_0-9]+@[a-zA-Z_0-9]+(\\.[a-zA-Z_0-9]+)+;//用\w改写规则\w表示:单词字符:[a-zA-Z_0-9]//反斜杠\\的用法:当在字符串中,\表示转义,所以要表示明确意思要用两个反斜杠Stringregex=\\w+@\\w+(\\.\\w+)+;booleanflag=eamil.matches(regex);System.out.println(flag);5.将字符串还原成:“我要学编程”。如:我...我.要....Strings=我我....我...我.要...要要...要学....学学..学.编..编编.编.程.程.程..程;Stringregex=\\.+;//先把点去掉s=s.replaceAll(regex,);System.out.println(s);s=s.replaceAll((.)\\1+,$1);//再去叠词,注意:这里$1表示前面(.)\\1内的值,也就是任意值.()是组意思System.out.println(s);6.能将这些ip地址排序。按照地址段数值从小到大排序。192.168.3.23202.10.34.23.3.3.3127.0.0.180.12.23.34思路:*ip地址都是字符串,所有字符串排序,用TreeSet。*如果用TreeSet现在存在每个ip地址,就会有问题。因为有部分ip没有满足三位。*这样比较是有问题的,所有,我们采取补位的方式。*1:先给每个ip地址的每一个位在前面补2个0。*2:把超出3位的数据,截取成3位。*/publicclassTest{publicstaticvoidmain(String[]args){Stringstr=192.168.3.23202.10.34.23.3.3.3127.0.0.180.12.23.34;//先补2个0str=str.replaceAll((\\d+),00$1);System.out.println(str);//去除超出3位的前面的0str=str.replaceAll(0*(\\d{3}),$1);System.out.println(str);//切割String[]ips=str.split();//我遍历这个字符串数组,把每个数据添加到TreeSet集合中。TreeSetStringts=newTreeSetString();for(Strings:ips){ts.add(s);//System.out.println(s);}//System.out.println(ts);//最后遍历集合,把前面的0干掉for(Strings:ts){s=s.replaceAll(0*(\\d+),$1);System.out.println(s);}}}网络编程:1.模拟Tcp协议的传输过程*/publicclassTest{publicstaticvoidmain(String[]args)throwsIOException{//定义客户端端口Sockets=newSocket(192.168.1.111,10086);//定义读取键盘输入的流BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));OutputStreamin=s.getOutputStream();PrintWriterpw=newPrintWriter(in,true);//定义读取服务器的字符流BufferedReaderbr1=newBufferedReader(newInputStreamReader(s.getInputStream()));Strings1=null;//写入服务器while((s1=br.readLine())!=null){if(over.equals(s1)){break;}pw.println(s1);//读取服务器写入的数据Strings3=br1.readLine();System.out.println(s3);}pw.close();br.close();s.close();}}服务器端publicstaticvoidmain(String[]args)throwsIOException{//定义服务器接收端口ServerSocketss=newServerSocket(10086);//或取服务器Socket接口Sockets=ss.accept();//获取读取客户端的流BufferedReaderbr=newBufferedReader(newInputStreamReader(s.getInputStream()));//定义输出客户端数据的流PrintWriterpw=newPrintWriter(System.out,true);//获取反馈输出客户端的流PrintWriterpw2=newPrintWriter(s.getOutputStream(),true);//写入客户端数据到控制台Stringstr=null;while((str=br.readLine())!=null){pw.println(str);//反馈回数据到客户端pw2.println(收到);}ss.close();s.close();}}2.模拟UDP协议做一个聊天工具创建接收端与发送端发送端设立端口,用字符缓冲流读取数据打包发送接收端设立接收端口,接收数据包,用包的方法解析包的数据,打印到控制台//创建发送服务端DatagramSocketds=newDatagramSocket();//创建键盘录入对象,并用转换流进行转换后高效处理BufferedReaderbs=newBufferedReader(newInputStreamReader(System.in));Strings=null;while((s=bs.readLine())!=null){//把每一行的数据进行封装byte[]bye=s.getBytes();DatagramPacketdp=newDatagramPacket(bye,bye.length,InetAddress.getByName(fada-pc),11111);//打包发送ds.send(dp);}ds.close();bs.close();//创建接收端的服务DatagramSocketds=newDatagramSocket(11111);//用循环接收数据while(true){//定义一个容器接收数据,把这个容器传递给数据包byte[]bye=newbyte[1024];//调用接收方法接受数据DatagramPacketdp=newDatagramPacket(bye,bye.length);ds.receive(dp);//解析数据Stringip=dp.getAddress().getHostAddress();Stringtext=newString(dp.getData(),0,dp.getLength());//打印数据System.out.println(ip+----+text);}3.如何通过主机q或IP文本,获取IP和电脑名称主要运用InetAddress类和其下面的getByNamegetHostAdddressgetHostName方法publicstaticvoidmain(String[]args)throwsUnknownHostException{InetAddressid1=InetAddress.getByName(fada-pc);InetAddressid=InetAddress.getByName(192.168.1.111);Stringip=id.getHostAddress();Stringname=id.getHostName();System.out.println(ip+--------+name);System.out.println(id1.getHostAddress()+------------+id1.
本文标题:java经典编程事例
链接地址:https://www.777doc.com/doc-5538584 .html