ImageVerifierCode 换一换
格式:DOC , 页数:26 ,大小:281.50KB ,
资源ID:7727009      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/7727009.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(java经典编程事例.doc)为本站上传会员【xrp****65】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

java经典编程事例.doc

1、经典编程小事例 反射与正则 1. 给一个ArrayList集合中添加一个字符串数据,并显示 * 思路:1,获取这个集合的字节码对象 然后通过Class对象获取该集合对象. * 2.再用Class对象获取集合的add方法对象Method * 3.再把class对象与添加的字符串当参数传给Method的方法invoke. import java.lang.reflect.Method; import java.util.ArrayList; import java.util.List; public class Test { public stat

2、ic void main(String[] args) throws Exception { List list = new ArrayList(); Class cls = list.getClass(); ArrayList obj =(ArrayList)cls.newInstance(); Method mt = cls.getMethod("add",Object.class); mt.invoke(obj, "String"); //obj.add("String");这样则无法编译通

3、过 System.out.println(obj); } } 2. 通过配置文件运行类中的方法 import java.io.FileInputStream; import java.lang.reflect.Method; import java.util.Properties; /* * 思路: * 1,先将文件写入字节流,然后将字节流写入Properties集合中 * 2,通过getProperties方法获取方法名和类名 * 3,再通过类名获取其class对象 * 4.通过对象和方法名获取其方法 */ public class Test

4、{ public static void main(String[] args) throws Exception{ FileInputStream file = new FileInputStream("Show.txt"); Properties pro = new Properties(); pro.load(file); file.close(); //通过键值对获取对应的类名和方法名 String className = pro.getProperty("className"); String methodName= pro.getPrope

5、rty("methodName"); //通过反射获得字节码对象和方法对象 Class cls = Class.forName(className); Object obj =cls.newInstance(); Method mt = cls.getMethod(methodName,null);//方法一定要公用public //如果是getDeclaredMethod,则也可以获取非公有方法 //如果方法私用,那么要先暴力破解:mt.setAccessible(true); mt.invoke(obj,null); } } 3.随即输入QQ号:

6、校验QQ号码:不能以0开头 是5-15位的数字 import java.util.Scanner; * * 思路:用正则定义规范,再用String类的匹配方法match方法判断时否正确 public class Test { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String qq = sc.nextLine(); String segex ="[^0][0-9]{4,14}"; boolean flag= qq.matches(segex

7、); if (flag) { System.out.println(qq); }else{ System.out.println("输入格式错误"); } 4. 邮件校验 //String regex = "[a-zA-Z_0-9]+@[a-zA-Z_0-9]+(\\.[a-zA-Z_0-9]+)+"; //用\w改写规则\w表示:单词字符:[a-zA-Z_0-9] //反斜杠\\的用法:当在字符串中,\表示转义,所以要表示明确意思要用两个反斜杠 String regex = "\\w+@\\w+(\\.\\w+)+"; boolea

8、n flag = eamil.matches(regex); System.out.println(flag); 5.将字符串还原成:“我要学编程”。如:我...我.要.... String s = "我我....我...我.要...要要...要学....学学..学.编..编编.编.程.程.程..程"; String regex = "\\.+";//先把点去掉 s=s.replaceAll(regex, ""); System.out.println(s); s=s.replaceAll("(.)\\1+", "$1");//再去叠词,注意:这里$1表示前面

9、)\\1内的值,也就是任意值.()是组意思 System.out.println(s); 6.能将这些ip地址排序。按照地址段数值从小到大排序。 "192.168.3.23 202.10.34.2 3.3.3.3 127.0.0.1 80.12.23.34" 思路: * ip地址都是字符串,所有字符串排序,用TreeSet。 * 如果用TreeSet现在存在每个ip地址,就会有问题。因为有部分ip没有满足三位。 * 这样比较是有问题的, 所有,我们采取补位的方式。 * 1:先给每个ip地址的每一个位在前面补2个0。 * 2:把超出3位的数据,截取成

10、3位。 */ public class Test { public static void main(String[] args) { String str = "192.168.3.23 202.10.34.2 3.3.3.3 127.0.0.1 80.12.23.34"; // 先补2个0 str = str.replaceAll("(\\d+)", "00$1"); System.out.println(str); // 去除超出3位的前面的0 str = str.replaceAll("0*(\\d{3})", "$1"); Sys

11、tem.out.println(str); // 切割 String[] ips = str.split(" "); // 我遍历这个字符串数组,把每个数据添加到TreeSet集合中。 TreeSet ts = new TreeSet(); for (String s : ips) { ts.add(s); // System.out.println(s); } //System.out.println(ts); //最后遍历集合,把前面的0干掉 for(String s : ts){

12、 s = s.replaceAll("0*(\\d+)", "$1"); System.out.println(s); } } } 网络编程: 1.模拟Tcp协议的传输过程 */ public class Test { public static void main(String[] args) throws IOException { //定义客户端端口 Socket s = new Socket("192.168.1.111",10086); //定义读取键盘输入的流 BufferedReader br = new Bu

13、fferedReader(new InputStreamReader(System.in)); OutputStream in = s.getOutputStream(); PrintWriter pw = new PrintWriter(in,true); //定义读取服务器的字符流 BufferedReader br1 = new BufferedReader(new InputStreamReader(s.getInputStream())); String s1=null; //写入服务器 while((s1=br.readLine())!=n

14、ull) { if ("over".equals(s1)){ break; } pw.println(s1); //读取服务器写入的数据 String s3= br1.readLine(); System.out.println(s3); } pw.close(); br.close(); s.close(); } } 服务器端 public static void main(String[] args) throws IOException { //定义服务器接收端口 ServerSo

15、cket ss = new ServerSocket(10086); //或取服务器Socket接口 Socket s = ss.accept(); //获取读取客户端的流 BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream())); //定义输出客户端数据的流 PrintWriter pw=new PrintWriter(System.out,true); //获取反馈输出客户端的流 PrintWriter pw2=new PrintWriter(s.get

16、OutputStream(),true); //写入客户端数据到控制台 String str =null; while((str=br.readLine())!=null){ pw.println(str); //反馈回数据到客户端 pw2.println("收到"); } ss.close(); s.close(); } } 2. 模拟UDP协议做一个聊天工具 创建接收端与发送端 发送端设立端口,用字符缓冲流读取数据打包发送 接收端设立接收端口,接收数据包,用包的方法解析包的数据,打印到控制台 //创建发送服务端 Datagra

17、mSocket ds = new DatagramSocket(); // 创建键盘录入对象,并用转换流进行转换后高效处理 BufferedReader bs= new BufferedReader(new InputStreamReader(System.in)); String s =null; while((s=bs.readLine())!=null){ // 把每一行的数据进行封装 byte[] bye =s.getBytes(); DatagramPacket dp = new DatagramPacket(bye,bye.le

18、ngth,InetAddress.getByName("fada-pc"),11111); //打包发送 ds.send(dp); } ds.close(); bs.close(); // 创建接收端的服务 DatagramSocket ds = new DatagramSocket(11111); // 用循环接收数据 while (true) { // 定义一个容器接收数据,把这个容器传递给数据包 byte[] bye = new byte[1024]; // 调用接收方法接受数据 Datagr

19、amPacket dp = new DatagramPacket(bye, bye.length); ds.receive(dp); // 解析数据 String ip = dp.getAddress().getHostAddress(); String text = new String(dp.getData(), 0, dp.getLength()); // 打印数据 System.out.println(ip + "----" + text); } 3. 如何通过主机q或IP文本,获取IP和电脑名称 主要运用InetAddre

20、ss类和其下面的getByName getHostAdddress getHostName方法 public static void main(String[] args)throws UnknownHostException { InetAddress id1 = InetAddress.getByName("fada-pc"); InetAddress id = InetAddress.getByName("192.168.1.111"); String ip = id.getHostAddress(); String name = id.getHostName

21、); System.out.println(ip+"--------"+name); System.out.println(id1.getHostAddress()+"------------"+id1.getHostName()); } IO流 1. 要求获取一个程序运行的次数,如果满足5次,那么该程序退出,请给出注册的提示,并结束 思路: * 1:定义计数器记录程序的运行次数。 * 由于这个次数如果是记录在程序中,那么程序结束,下次再开始运行,记录次数又重头开始。 * 所以,我们需要把次数记录在一个文件中。 * 2:每次我们可以从一个文件

22、中读取一个次数,进行判断,看我们的程序是否还可以运行。 * 如果可以,就让程序继续,否则,提示要注册。 * 3:假如一个文件中,只记录一个数字没什么意义。所以,我们采用键值对的方式记录。 * 这样呢,我们就考虑到了Properties这个对象。 */ public class Test { public static void main(String[] args) { try { boolean flag = runCount(); if (!flag) { System.out.println("请拿钱注册"); r

23、eturn; } } catch (IOException e) { e.printStackTrace(); } System.out.println("开始玩游戏...."); System.out.println("玩游戏...."); System.out.println("结束玩游戏...."); } // 每次读取文件,获取键值对中的值进行判断,如果大于5次就改真假值。 public static boolean runCount() throws IOException { boolean flag = true;

24、 // 定义一个属性文件(.properties, .ini xml) File countFile = new File("count.properties"); // 判断文件是否存在,如果不存在就创建文件 if (!countFile.exists()) { countFile.createNewFile(); } // 定义我们记录数据的格式:count=值 Properties prop = new Properties(); // 把数据从文件中加载到集合中 FileInputStream fis = new Fi

25、leInputStream(countFile); prop.load(fis); fis.close(); // 通过键获取值 int num = 0; String value = prop.getProperty("count"); if (value != null) { num = Integer.parseInt(value); if (num >= 5) { flag = false; } } num++; // 设置值 prop.setProperty("count", num + "

26、"); // 把集合中的数据重新写回文件 FileOutputStream fos = new FileOutputStream(countFile); prop.store(fos, null); fos.close(); return flag; } } 2.实现一个包装类,让读出的每一行自动加上行号和:号 public class Test2 extends BufferedReader { private int lineNumber; public Test2(Reader r) { super(r); }

27、 public String myReadLine() throws IOException { lineNumber++; if (super.readLine()!=null) { return lineNumber+":"+super.readLine(); }else{ return null; } } } 3.*需求:把Properties.txt中键为count的值改为100 *读出到Properties集合--用load()方法 *再从转化成set集合遍历出count键,再用getProperty写入新值

28、 *再用list或store方法写放到文件中*/ public class Test { public static void main(String[] args) throws IOException { FileInputStream fs = new FileInputStream("Properties.txt"); Properties pp = new Properties(); pp.load(fs); fs.close(); System.out.println(pp); Set set =pp.keySet(); Set

29、set1 =pp.stringPropertyNames(); for (Object obj:set) { String s =(String)obj; if(s.equals("count")){ pp.setProperty(s, 100+""); } } PrintWriter pw = new PrintWriter(new FileWriter("Properties.txt"),true); pp.list(pw); pw.close(); } 4.键盘输入转大写在控制台显示 public static voi

30、d main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); PrintWriter pw = new PrintWriter(System.out,true); String line = null; while((line=br.readLine())!=null){ pw.println(line.toUpperCase()); } br.close(); pw.cl

31、ose(); } 5.用字符缓冲流复制一张图片并记算花费时间. public static void main(String[] args) throws IOException { BufferedInputStream br = new BufferedInputStream(new FileInputStream("c:\\纳木错.jpg")); BufferedOutputStream pw = new BufferedOutputStream(new FileOutputStream("D:\\纳木错.jpg")); int line=0;

32、long l1 =System.currentTimeMillis(); byte[] bye = new byte[1024]; while((line=br.read(bye))!=-1){ pw.write(bye); pw.flush(); } long l2 =System.currentTimeMillis(); System.out.println(l2-l1); br.close(); pw.close(); 6. 自己模拟BufferedReader对象 //思路:我们现在其实底层调用的还是Reader的读操作。

33、 //而Reader一次可以读取一个字符,我们得想办法一行的字符组合起来并返回。 //每次获取一个字符,组合起来,这样的话,就要求有一个容器来存储每次读到的单个字符。 //请问?用哪个容器。通过思考最终选择了StringBuilder public class MyBufferedReader { //private FileReader fr; //这里我不仅仅是对文件对象进行功能的增强 private Reader r; public MyBufferedReader(Reader r){ this.r = r; } //模拟一次读取一行数据的方

34、法 public String myReadLine() throws IOException{ StringBuilder sb = new StringBuilder(); //读取字符数据怎么判断是一行结束呢?在windows中是\r\n int ch = 0; while((ch=r.read())!=-1){ //如果是\r则继续读取一个字符,看是不是\n如果是就把这个sb转成字符串返回。 if(ch=='\r'){ continue; } if(ch=='\n'){ return sb.toString

35、); } else{ sb.append((char)ch);//如果不是\r\n数据,就把数据添加到sb上。 } } //假如文本文件中的数据最后没有换行,可以采用这种方式解决读不到最后一行的问题 if(sb.length()>0){ return sb.toString(); } return null; } //模拟关闭方法 public void myClose() throws IOException{ r.close(); } } 递归: 1.一头母羊的寿命是5年,它会在第

36、2年底和第4年底各生下一头母羊,第5年底死去,问一开始农场有1头母羊,N年后,农场会有多少只母羊? public static int getSheeps(int n) { // sheeps表示整个羊的生态圈 ArrayList sheeps = new ArrayList(); sheeps.add(new Sheep()); List addSheeps = new ArrayList();// 待添加到生态圈的新羊 List delSheeps = new ArrayList<

37、Sheep>();// 待从生态圈删除的羊 for (int i = 1; i <= n; i++) { for (Sheep s : sheeps) { s.age++; if (s.age == 2 || s.age == 4) {// 羊仍存活 addSheeps.add(new Sheep()); } else if (s.age == 5) { // 羊死亡,加入删除列表delSheeps中,等待删除 delSheeps.add(s); } } sheeps.addAll(addShee

38、ps); sheeps.removeAll(delSheeps); addSheeps.clear();// 清空addSheeps delSheeps.clear();// 清空待删除列表中的元素 } return sheeps.size(); // 最后总羊数即羊生态圈中的羊数目 } } 递归: public static int get(int year) { int num=1; //The initial sheep number for(int i=1; i<=year;

39、 i++){ if(i==2){ num+=get(year-2); }else if(i==4){ num+=get(year-4); }else if(i==5){ num--; } } return num; } 2.将某个目录(含子目录和文件的)下所有的以java结尾的文件的路径存储到一个文本文件中 思路:

40、 * 1:指定目录。 * 2:就可以使用递归的方式获取该目录下所有的文件对象,然后进行判断。 * 如果是以java结尾的文件,我就把该文件对象存储在集合中。 * 3:遍历集合对象,获取每个文件对象,把它的绝对路径用流的方式写入到文本文件中。 File f = new File("E:\\Java0813-毕"); ArrayList array = new ArrayList(); getJava(f, array); PrintWriter pw = new PrintWriter(new FileWriter

41、"java.txt"), true); for (File s : array) { System.out.println(s); pw.println(s.getName()); } } private static void getJava(File f, ArrayList array) { File[] fi =f.listFiles(); for (File file:fi) { if (file.isDirectory()) { getJava(file,array); }else{

42、if (file.getName().endsWith(".java")) { array.add(file); } } 3.* 求5的阶乘。 递归的问题: * 1:递归的次数不能过多。 * 2:递归必须有结束条件。递归出口。 * 5*4*3*2*1 public static int getTotal(int m){ //m=5 if(m==1){ return 1; } else{ return m*getTotal(m-1); 4.斐波纳契数列:* 1,1,2,3,5,8,13,21..

43、 * 递归的出口:第一项和第二项的值都是1 a b * 递归的表达式:第三项开始:是前两项之和 a+b */ public static int getFib(int m){ if(m==1 || m==2){ return 1; } else{ return getFib(m-1)+getFib(m-2); } } 集合: 1.去除ArrayList集合中的重复元素。 思路:用contains方法去判断,定义一个新集合去装, public static ArrayList getSingletonCollecti

44、on(ArrayList array) { ArrayList al = new ArrayList(); for (int x = 0; x < array.size(); x++) { String str = (String) array.get(x); //判断al中是否包含某个元素,如果不包含,则把元素加入al. if (!al.contains(str)) { al.add(str); } } return al; } } 2.自定义比较器,实现按照Worker的姓名的长度进行比较 */ pub

45、lic class CompareByLength implements Comparator { public int compare(Worker w1, Worker w2) { int x = 0; if (w1.getName().length() > w2.getName().length()) { x = 1; } else if (w1.getName().length() == w2.getName().length()) { x = 0; } else if (w1.getName().length() < w2.

46、getName().length()) { x = -1; } return x; } } 3.在方法上应用自定义泛型 class General { // 打印T public void show(T t) { System.out.println(t); } } public class Test2 { public static void main(String[] args) { General g = new General(); g.show("aaa"); g.show(new Integer(2

47、0)); print("bbb"); print(new Integer(30)); int[] in ={1,2,3}; print(in); } public static void print(Q q) { System.out.println(q); } } 4.把集合中的字符串按照长度进行排序 //定义一个比较器 class StringCompareByLength implements Comparator { public int compare(String s1, String s2) {

48、 int num = s1.length()-s2.length(); //int compareTo 按字典顺序比较两个字符串。相等返回0 return num==0?pareTo(s2):num; } } public class HashSetTest { public static void main(String[] args) { TreeSet hs = new TreeSet(new StringCompareByLength()); hs.add("hehe"); hs.add("haha"

49、); hs.add("abcd"); hs.add("hel"); hs.add("itcast"); hs.add("ok"); hs.add("hehe"); Iterator it = hs.iterator(); while (it.hasNext()) { String str = it.next(); System.out.println(str); } } } 05.将字符串中的数值进行排序后,生成一个字符串。"98 -1 23 0 8 14" 首先的说一下:这个字符串数值之间肯定有分隔。 1:把字符串切割成字符串 2:把切割后的字符串数组变成int数组 3:对int数组进行排序 4:把int数组转成字符串 public static void main(String[] args) { String str = "98 -1 23 0 8 14"; // 使用切割把字符串变成了字符串数组 String[] strArray = str.split(" "); // 定义一个int类型数组 int[] arr = new int[strArray.length]; // 把字符串数组变成int数组

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服