zoukankan      html  css  js  c++  java
  • 20145213《Java程序设计》第五周学习总结

    20145213《Java程序设计》第五周学习总结


    教材学习内容总结

    “素衣莫起风尘叹,犹及清明可到家。”每每念此,不得不心疼自己。古人清明长假都进城耍了,还担心自己清明之前能不能回来。而我还在宿舍里叹Java,毕竟懒癌后期,不拖到周末不舒服斯基。既然写博客是周末的主旋律,那我也就跟这节奏哼上几句吧!
    本周学习任务是自习学习笔记的第八,九章。个人感觉第九章的内容比第八章的异常处理难好多好多啊(伏笔),有些人可能听出了我的弦外之音了。对,我又没在写博客之前完成学习任务,即掌握第九章内容,那这次我就重点复习一下第八章的内容吧!
    阿基里德曾说过“给我一个支点,我就可以撬动整个地球。”那如果在实现方法时,给一些条件,使之成立,那么就有可能引发错误了。像课本举例那样,在要求输入INT型时,输入3O,就会引发错误,输出一些奇怪的信息。第八章就是要解决这些问题。
    * Java中所有的错误都会打包为对象,如果愿意,可以尝试try捕捉catch代表错误的对象后,做一些处理。例如:

    import java.util.*
     public class Average2{
    	 public static void main(String[] args){
    		 try{
    			 Scanner console = new Scanner (System.in)
    			 double sum = 0;
    			 int count = 0;
    			 while(true){
    				 int number = console.nextInt();
    				 if(number == 0){
    					 break;
    				 }
    				 sum += number;
    				 count++;
    			 }
    			 System.out.printf("平均 %.2f%n",sum/ count);
    		 } catch (InputMismatchEcxeption ex){
    			 System.out.println("必须输入整数");
    		 }
    	 }
    }
    

    以上代码在错误发生时显示更友好的错误信息。

    import java.util.*
     public class Average2{
    	 public static void main(String[] args){
    			 Scanner console = new Scanner (System.in)
    			 double sum = 0;
    			 int count = 0;
    			 while(true){
    				 try{
    				 int number = console.nextInt();
    				 if(number == 0){
    					 break;
    				 }
    				 sum += number;
    				 count++;
    			 
    		 } catch (InputMismatchEcxeption ex){
    			 System.out.println("略过非整数输入: %s %n",console.next());
    		 }
    			 }
    		 System.out.printf("平均 %.2f%n",sum/ count);
    	 }
     }
    

    以上代码可以在捕捉处理之后,尝试恢复程序正常执行流程。

    • 错误会被包装为对象,这些对象都是可抛出的,因此设计错误对象都继承自java.lang.Throwable类,它有两个子类``` java.lang.Error 与java.lang.Exception。
    • Error与其子类实例代表严重系统错误,并不建议使用 trycatch来处理。
    • 不属于Error、java.lang.RuntimeException或其子类实例,你就必须明确使用 trycatch来处理或者用throws声明这个方法会抛出异常。
    • 正确区分受检异常与执行时期异常,这里不赘述了。
    • catch 异常区块内容重复了,撰写是可以使用多重捕捉语法。
    • 操作过程中,可以使用throws声明此方法会抛出异常类型,可由方法的客户端依据当时调用的环境信息进行处理。
    • catch区块进行完部分错误处理之后,可以使用throw将异常再次抛出,如果抛出的是受检异常,此方法上必须使用throws声明,如果抛出的异常是非受检异常,此时不使用throws声明。
    • 多重方法调用下,想得知异常发生的根源,可以利用异常对象自动收集的堆栈追踪。直接调用对象的printStackTrace().在使用throws重抛异常时,异常追踪堆栈起点还是异常的发生根源,而不是重抛异常的地方。
    • 如果想要让异常堆栈起点为重抛异常的地方,可以使用fillInStackTrace()
    • 使用断言,assert关键字,具体建议请看课本P244.
    • 为了防止由异常引起必执行的流程中断,介意搭配finally,若撰写有finally区块,这该区块一定会被执行。
    • 自动尝试关闭资源语法,具体使用如下:
    import java.io.fileInputStream;
    import java.io.FileNotFoundException;
    import java.util.Scanner;
    public class FileUtil{
    	public static String readFile(String name) throws FileNotFoundException {
    		StringBuilder text = new StringBuilder();
    		try(Scanner console = new Scanner (new FileInputStream(name))){
    			while (console.hasNext()){
    				text.append(console.nextLine()).append('
    ');
    			}
    		}
    		return text.toString();
    	}
    }
    

    教材学习中的问题和解决过程

    我现在对第九章的内容一片茫然,什么都不懂。我也试着去阅读去理解,然而效果甚微。我查过同类型的Java辅导书,却惊讶发现可能由于作者不同吧,每种辅导书的章节内容分类也是截然不同。我现在寄希望于《疯狂的Java讲义》,希望快递早点到。就像老师上课问,第九章内容有什么不懂的,请举手提问。而我就是那沉默的大多数。周四就要考试了,我会抓紧时间补上第九章的内容。


    感悟

    首先我希望老师可以把每周最晚提交博客时间放到每周四。因为每次考试前夕,我都激动的自习不下新知识,老把晚自习时间放在复习要考试内容上。其次,程序设计世界这么大,我想出去看看。以后每周有数据结构试验了,虽然娄老师说用Java语言做有加分,然而我还是C语言用起来比较顺手。奈何之前C语言学习不精,知识就停留在指针那部分,没有再深入了解了。恶因结恶果,鲁迅说过,时间就像海绵,只要挤总是会有的,现在我也要抽出一点时间复习C语言了。最后,敲了4周的代码,再在体会中强调实践是多么重要,感叹敲代码多么有用已经是老生常谈了。只有退潮了才知道谁在裸游,只有亲身实践过体会到乐趣才会坚持敲下去。就好比如鱼饮水,冷暖自知。
    截图如下



    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 20/20 1/1 10/10
    第二周 200/220 1/2 15/25
    第三周 200/420 1/3 15/40
    第四周 200/620 1/4 15/55
    第五周 100/720 1/5 10/65

    参考资料

    *Java学习笔记(第8版)
    *《Java学习笔记(第8版)》学习指导

  • 相关阅读:
    河北金力集团公文流转系统
    输出《Harry Potter and the Sorcerer's Stone》英文i的字母数量并排序
    四则运算自动出题系统
    输出《Harry Potter and the Sorcerer's Stone》文本中的前N个最长用的英文单词及其数量
    《程序员的修炼之道从小工到专家》第二章阅读有感
    异常处理动手动脑
    poj 1860
    poj 2182
    poj 2253
    poj 2001
  • 原文地址:https://www.cnblogs.com/qiwei/p/5350507.html
Copyright © 2011-2022 走看看