20145237第六周学习总结
20145237第6周學習總結
教材學習內容總結
第十章
??InputStream與OutputStream
?
流(Stream)是對「輸入輸出」的抽象。
?
read:每次會嘗試讀入byte數組長度的數據,并返回實際讀入的字節。為-1時即為未讀取到數據。
?
write:指定要寫出的byte數組、初始索引與數組長度。
??標準輸入輸出//這部分已經很熟悉了
?
System.in: 標準輸入,默認關聯到鍵盤(終端輸入)
?
System.out: 標準輸出,默認關聯到顯示器(終端輸出)
?
System.err: 標準錯誤,默認關聯到顯示器(終端輸出)
?
輸入輸出重定向:setIn,setOut,setErr
??其余
?
FileInputStream與FileOutPutStream:文件讀寫
?
BufferedInputStream與BufferedOutputStream: 內部提供緩沖,提高效率
?
DataInputStream與DataOutputStream:基本數據類型與字節的轉換
?
ObjectInputStream與ObjectOutputStream:java.io.Serializable接口
??字符處理類
?
read:每次會嘗試讀入byte數組長度的數據,并返回實際讀入的字節。為-1時即為未讀取到數據。
?
write:指定要寫出的byte數組、初始索引與數組長度。
package cc.openhome;
import java.io.*;
public class IO {
????public static void dump(InputStream src, OutputStream dest)
???????????????????????????????throws IOException {
????????try (InputStream input = src; OutputStream output = dest) {
????????????byte[] data = new byte[1024];
????????????int length;
????????????while ((length = input.read(data)) != -1) {
????????????????output.write(data, 0, length);
????????????}
????????}
????}
}
第十一章 線程與并行API?
·單線程程序:啟動的程序從main()程序進入點開始至結束只有一個流程。示范代碼如下:
?import static java.lang.System.out;
public class TortoiseHareRace {
????public static void main(String[] args) {
????????boolean[] flags = {true, false};
????????int totalStep = 10;
????????int tortoiseStep = 0;
????????int hareStep = 0;
????????out.println("龜兔賽跑開始...");
????????while(tortoiseStep < totalStep && hareStep < totalStep) {
????????????tortoiseStep++;???????
????????????out.printf("烏龜跑了 %d 步...%n", tortoiseStep);
????????????boolean isHareSleep = flags[((int) (Math.random() * 10)) % 2];
????????????if(isHareSleep) {
????????????????out.println("兔子睡著了zzzz");
????????????} else {
????????????????hareStep += 2;????
????????????????out.printf("兔子跑了 %d 步...%n", hareStep);
????????????}
????????}
????}
}
?
在java中,如果想在main()以外獨立設計流程,可以撰寫類操作java.lang.Runnable接口,流程的進入點是操作在run()方法中。
?在java中,從main()開始的流程會由主線程執行,可以創建Thread實例來執行Runnable實例定義的run()方法。
?
JVM是臺虛擬計算機,只安裝一顆稱為主線程的CPU,可執行main()定義的執行流程。如果想要為JVM加裝CPU,就是創建Thread實例,要啟動額外CPU就是調用Thread實例的start()方法,額外CPU執行流程的進入點,可以定義在Runnale接口的run()方法中。
?
操作Runnable接口的好處就是較有彈性,你的類還有機會繼承其他類。若繼承了Thread,那該類就是一種Thread,通常是為了直接利用Thread中定義的一些方法,才會繼承Thread來操作。
?
關于ThreadGroup
?
1.獲取目前線程所屬線程群組名:Thread.currentThread().getThreadGroup().getName()
?
2.ThreadGroup的某些方法,可以對群組中所有線程產生作用,interrupt()方法可以中斷群組中所有線程,setMaxPriority()方法可以設定群組中所有線程最大優先權。
?activeCount()方法獲取群組的線程數量 。
?enumerate()方法要傳入Thread數組,這會將線程對象設定至每個數組索引。
?uncaughtException()方法第一個參數可取得發生異常的線程實例,第二個參數可取得異常對象。
?
3.未捕捉異常會由線程實例setUncaughtExceptionHandler()設定的Thread.UncaughtExceptionHandler實例處理之后是線程ThreadGroup,然后是默認的Thread.UncaughtExceptionHandler。
教材學習中的問題和解決過程
p325頁的代碼運行結果跟舍友不一樣。跟舍友討論后發現是因為程序中設置了兔子隨機睡覺,如果兔子不睡覺就將 hareStep 遞增2,表示兔子走兩步,只要兔子或烏龜其中一個走完10步就離開循環,根據兔子睡覺的隨機性,結果不同
本周代碼托管截圖
其他(感悟、思考等,可選)
這周因為有四個實驗,需要寫很多實驗報告,而java又有兩章需要進行學習,所以學習時間真的很少,java這種自學模式需要我們很大的自制力,能夠做到的話確實能夠學到許多有用的知識,我還需努力。
學習進度條
|????????????| 代碼行數(新增/累積)| 博客量(新增/累積)|學習時間(新增/累積)|重要成長|
| --------???| :----------------:|:----------------:|:---------------:??|:-----:|
| 目標????????| 5000行????????????|???30篇???????????| 400小時????????????|???????|
| 第六周??????| 200/1030???????????|???1/11????????????| 20/20?????????????|???????|
???
轉載于:https://www.cnblogs.com/20145237fhn/p/5375313.html
總結
以上是生活随笔為你收集整理的20145237第六周学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第五章项目 体检套餐管理系统
- 下一篇: iOS设备唯一标识(可以用版)