第五週 學習總結

1、教材學習筆記

ch7

一、內部類&匿名類html

  • 內部類是定義在一個類中的另一個類;
  • 內部類能夠被修飾爲static內部類;
  • 和子類有關的匿名類
new 類名() {
匿名類的類體
};
  • 和接口有關的匿名類
new 接口名(){
實現接口的匿名類的類體
};

二、異常類java

  • 處理方式有兩種:
    使用try..catch..finally進行捕獲;
  • 在產生異常的方法聲明後面寫上throws 某一個Exception類型,如throws Exception,將異常拋出到外面一層去。
  • 斷言進行調試

三、斷言git

  • 程序正式運行時,斷言語句自動關閉,可使用java -ea 文件名;
  • 程序調試階段,斷言語句發揮正常做用;
  • 斷言語句的兩種格式 assert bolleanException; assert blooeanException:messageException;
ch10

一、字節處理數組

  • 兩個最基本字節流的抽象父類InputStream、OutputStream,通常用他的繼承類。ide

  • FileInputStream:構造:FileInputStream(File file)、FileInputStream(StringfileName),主要方法:`int read(int d)、int read(byte[] buf) 。學習

  • FileOutputStream:構造:FileOutputStream(File file)、FileOutputStream(StringfileName)idea

二、緩衝流:BufferedReader和BufferedWriter類建立的對象爲緩衝輸入流、輸出流,兩者加強讀寫文件的能力。調試

三、數組流:字節數組流、字符數組流code

四、對象流:ObjectInputStream、ObjeatOutputStream類建立的對象稱爲對象輸入流和對象輸出流;orm

2、碼雲連接

碼雲連接

3、腳本運行截圖


附:遇到的問題及部分解決方法

一、異常類:關於Unreachable Statement

//教材P167
public class Example7_4 {
    public static void main(String args[ ]) {
        int n = 0,m = 0,t = 1000;
        try{  m = Integer.parseInt("8888");
            n = Integer.parseInt("ab89"); //發生異常,轉向catch
            t = 7777;  //t沒有機會被賦值
            //***************
            System.out.println("a");//這裏是我本身添加的
            //***************
        }
        catch(NumberFormatException e) {
            System.out.println("發生異常:"+e.getMessage());
        }
        System.out.println("n="+n+",m="+m+",t="+t);
        try{  System.out.println("故意拋出I/O異常!");
            throw new java.io.IOException("我是故意的");
            //System.out.println("這個輸出語句確定沒有機會執行,因此必須註釋掉,不然編譯出錯");
        }
        catch(java.io.IOException e) {
            System.out.println("發生異常:"+e.getMessage());
        }
    }
}

上面的程序中//System.out.println("這個輸出語句確定沒有機會執行,因此必須註釋掉,不然編譯出錯");這句話不太理解,爲何沒機會執行就要註釋掉?上面的t = 7777;不是也沒有機會執行嗎?

後來我發現在throw語句的後面不能寫任何其餘的語句,若是寫了錯誤提示:Unreachable Statement。前面的語句中發生了異常,可是由於沒有寫throw,因此就不存在沒有機會執行的問題。

二、怎麼在IDEA裏面開啓斷言?

RUN -> Edit Configurations -> Configuration -> VM options : 輸入-ea,點擊OK。

教材P170頁代碼及運行結果(帶-ea):

import java.util.Scanner;
public class Main {
  public static void main (String args[ ]) {
       int [] score={-120,98,89,120,99};
       int sum=0;
       for(int number:score) {
          assert number>0:"負數不能是成績";
          sum=sum+number;
       } 
       System.out.println("總成績:"+sum);    
   }
}
Exception in thread "main" java.lang.AssertionError: 負數不能是成績
    at Main.main(Main.java:7)

Process finished with exit code 1

三、for循環的另一種用法

上面的例子裏:

for(int number:score) {
        assert number>0:"負數不能是成績";
        sum=sum+number;
    }

之前注意到了for的這種用法,當時只瞟了一眼,覺得之後用不到也見得少,可是這會兒又想不起來了,慚愧。

找到一篇總結的不錯的:Java for循環的幾種用法 真 · 活到老學到老。

總結一下,在這裏大概就是:

> for (循環變量類型 循環變量名稱 : 要被遍歷的對象) 循環體

在這裏就是把數組score的每個值賦給一個int型叫number的變量,讓他在循環體裏面作運算。

四、程序退出代碼

System.exit(0);

以前考試的時候用過,我拿C語言的exit(0);程序報錯,我當時還不知道怎麼回事,在這記個筆記。

相關文章
相關標籤/搜索