20155302 2016-2017-2 《Java程序设计》第六周学习总结
20155302 2016-2017-2 《Java程序設(shè)計》第6周學(xué)習(xí)總結(jié)
教材學(xué)習(xí)內(nèi)容總結(jié)
Java中的流分為兩種,一種是字節(jié)流,另一種是字符流,分別由四個抽象類來表示(每種流包括輸入和輸出兩種所以一共四個):InputStream,OutputStream,Reader,Writer。Java中其他多種多樣變化的流均是由它們派生出來的。
InputStreamReader是InputStream和Reader之間的橋梁,由于System.in是字節(jié)流,需要用它來包裝之后變?yōu)樽址鞴┙o BufferedReader使用。
InputStream 為字節(jié)輸入流,它本身為一個抽象類,必須依靠其子類實現(xiàn)各種功能,此抽象類是表示字節(jié)輸入流的所有類的超類。 繼承自InputStream 的流都是向程序中輸入數(shù)據(jù)的,且數(shù)據(jù)單位為字節(jié)(8bit)。
OutputStream的基本方法: void write(int b) throws IOException 向輸出流寫入一個字節(jié)數(shù)據(jù) void flush() throws IOException 將輸出流中緩沖的數(shù)據(jù)全部寫出到目的地
Reader的基本方法: int read() throws IOException 讀取一個字符以整數(shù)形式返回,如果返回-1已到輸入流的末尾
Writer的基本方法 void write(int c) throws IOException 向輸出流寫入一個字符數(shù)據(jù) void write(String str) throws IOException將一個字符串中的字符寫入到輸出流 void write(String str,int offset,int length) 將一個字符串從offset開始的length個字符寫入到輸出流 void flush() throws IOException 將輸出流中緩沖的數(shù)據(jù)全部寫出到目的地
java.lang.Thread是Java API中的基礎(chǔ)線程類。定義線程的方法有兩種:一種是制作Thread的子類,覆蓋run()method,然后實例化你的Thread子類;另一種是定義實現(xiàn)了Runnable method的類(也就是定義run() method),然后傳遞此Runnable對象的instance給Thread()構(gòu)造函數(shù)。
線程可以以不同的優(yōu)先級運行。指定優(yōu)先級的線程通常會在已無具較高優(yōu)先級的線程等待時才會運行。
線程是進(jìn)程中的一個實體,是被系統(tǒng)獨立調(diào)度和分派的基本單位,線程自己不擁有系統(tǒng)資源,只擁有一點在運行中必不可少的資源,但它可與同屬一個進(jìn)程的其它線程共享進(jìn)程所擁有的全部資源。
通常在一個進(jìn)程中可以包含若干個線程,它們可以利用進(jìn)程所擁有的資源。在引入線程的操作系統(tǒng)中,通常都是把進(jìn)程作為分配資源的基本單位,而把線程作為獨立運行和獨立調(diào)度的基本單位。由于線程比進(jìn)程更小,基本上不擁有系統(tǒng)資源,故對它的調(diào)度所付出的開銷就會小得多,能更高效的提高系統(tǒng)內(nèi)多個程序間并發(fā)執(zhí)行的程度,從而顯著提高系統(tǒng)資源的利用率和吞吐量。
線程完成run()方法后,就會進(jìn)入Dead,進(jìn)入Dead的線程不可以再次調(diào)用start()方法,否則會拋出IllegalThreadStateException。
線程和進(jìn)程的區(qū)別在于,子進(jìn)程和父進(jìn)程有不同的代碼和數(shù)據(jù)空間,而多個線程則共享數(shù)據(jù)空間,每個線程有自己的執(zhí)行堆棧和程序計數(shù)器為其執(zhí)行上下文。
每個對象都會有一個內(nèi)部鎖定,或稱為監(jiān)控鎖定。被標(biāo)示為synchronized的區(qū)塊將會被監(jiān)控,任何線程要執(zhí)行synchronized區(qū)塊都必須先取得指定的對象鎖定。
教材學(xué)習(xí)中的問題和解決過程
- 問題1:一個線程運行時發(fā)生異常會怎樣?
- 問題1解決方案:如果異常沒有被捕獲該線程將會停止執(zhí)行。Thread.UncaughtExceptionHandler是用于處理未捕獲異常造成線程突然中斷情況的一個內(nèi)嵌接口。當(dāng)一個未捕獲異常將造成線程中斷的時候JVM會使用Thread.getUncaughtExceptionHandler()來查詢線程的UncaughtExceptionHandler并將線程和異常作為參數(shù)傳遞給handler的uncaughtException()方法進(jìn)行處理。
- 問題2:為什么wait和notify方法要在同步塊中調(diào)用?
- 問題2解決方案:主要是因為Java API強制要求這樣做,如果你不這么做,你的代碼會拋出IllegalMonitorStateException異常。還有一個原因是為了避免wait和notify之間產(chǎn)生競態(tài)條件。
代碼調(diào)試中的問題和解決過程
問題1:如下代碼為什么打印出來結(jié)果只有1次輸出,明明使用了2次println啊??
import java.io.*;public class BasicFileOutput {static String file = "BasicFileOutput.out"; public static void main(String[] args)throws IOException {BufferedReader in = new BufferedReader(new StringReader(BufferedInputFile.read("BasicFileOutput.java")));PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(file)));int lineCount = 1;String s;while((s = in.readLine()) != null )out.println(lineCount++ + ": " + s);out.close();// Show the stored file:System.out.println(BufferedInputFile.read(file));}}問題1解決方案:經(jīng)過我的結(jié)對同學(xué)學(xué)霸秦詩茂的指導(dǎo)與講解,我明白了,第一個println是輸出到文件里去了。第二個println才是輸出到控制臺。所以我看到在控制臺只有一行輸出。
代碼托管
上周考試錯題總結(jié)
- 現(xiàn)有:list是?一個合法的集合引?用getCollection()返回?一個合法集合的引?用哪個是合法的?(B,E)
A.or(Object o ; list)
B.for(Object o : getCollection())
C.for(Object o : list.iterator())
D.for(lterator i ; list.iterator() ; i.hasNext () )
E.for(lterator i=list.iterator(); i.hasNext (); )
現(xiàn)有
public class Demo{public static void main (String[] args){ List al=new ArrayList();a1.add("l");a1.add("2");a1.add("2");a1.add("3"); System.out.println (al);}}上述程序執(zhí)?行行后的輸出是哪項?A.[1,2,3]B.[1,2,3,3]C.[1,2,2,3]D.[2,1,3,2]Which of the following methods will not compile? :(B,D)
A.private void method1(String name) { if (name.equals("star"))
throw new IllegalArgumentException(name);
}
B.private void method2(int age) { if (age > 30)
throw Exception();
}
C.public double method5() throws Exception { return 0.7;
}
D.protected double method4() throws Exception { throw new Throwable();
}
- 表示鍵值對概念的接?口是?:(D)
A.Set
B.List
C.Collection
D.Map
- 創(chuàng)建?一個只能存放String的泛型ArrayList的語句句是哪項?:(B)
A.ArrayList al=new ArrayList(); B.ArrayList al=new ArrayList() C.ArrayList al=new ArrayList(); D.ArrayList al =new List();
結(jié)對及互評
評分標(biāo)準(zhǔn)
- 不使用Markdown不加分
- 有語法錯誤的不加分(鏈接打不開,表格不對,列表不正確...)
- 排版混亂的不加分
- 缺少“教材學(xué)習(xí)中的問題和解決過程”的不加分
- 缺少“代碼調(diào)試中的問題和解決過程”的不加分
- 代碼托管不能打開的不加分
- 缺少“結(jié)對及互評”的不能打開的不加分
- 缺少“上周考試錯題總結(jié)”的不能加分
- 缺少“進(jìn)度條”的不能加分
- 缺少“參考資料”的不能加分
教材學(xué)習(xí)中的問題和解決過程, 一個問題加1分
代碼調(diào)試中的問題和解決過程, 一個問題加1分
- 一周提交次數(shù)少于20次的不加分
- 周五前發(fā)博客的加1分
- 感想,體會不假大空的加1分
- 排版精美的加一分
- 進(jìn)度條中記錄學(xué)習(xí)時間與改進(jìn)情況的加1分
- 有動手寫新代碼的加1分
- 課后選擇題有驗證的加1分
- 代碼Commit Message規(guī)范的加1分
- 錯題學(xué)習(xí)深入的加1分
- 點評認(rèn)真,能指出博客和代碼中的問題的加1分
- 結(jié)對學(xué)習(xí)情況真實可信的加1分
- 有抄襲的扣至0分
- 代碼作弊的扣至0分
- 遲交作業(yè)的扣至0分
點評模板:
- 博客中值得學(xué)習(xí)的或問題:
- xxx
- xxx
- ...
- 代碼中值得學(xué)習(xí)的或問題:
- xxx
- xxx
- ...
基于評分標(biāo)準(zhǔn),我給本博客打分:XX分。得分情況如下:xxx
參考示例
點評過的同學(xué)博客和代碼
- 本周結(jié)對學(xué)習(xí)情況
- 20155322
- 結(jié)對照片
- 結(jié)對學(xué)習(xí)內(nèi)容
串流繼承的內(nèi)容和架構(gòu)
- 第十章與第十一章課后練習(xí)
代碼調(diào)試中遇到的困難和問題
- 線程內(nèi)容中synchronized,wait(),notify(),notifyAll()等使用方法和環(huán)境
- 上周博客互評情況
- 20155333
- 20155233
- 20155230
- 20155339
- 20155306
其他(感悟、思考等,可選)
本周的學(xué)習(xí)由于其他科目實驗,在代碼量上有些不足,希望自己下周可以再在代碼上下更多的功夫,只有自己動手敲代碼,在做中學(xué)才是最好的學(xué)習(xí)手段和方式,對于書中不好理解的知識要在仔細(xì)思考的條件下百度或者計時問老師,不要讓盲點陪自己過夜,邊學(xué)邊反思自己哪里做的不夠好,及時修正。
學(xué)習(xí)進(jìn)度條
| 目標(biāo) | 5000行 | 30篇 | 400小時 | |
| 第一周 | 20/20 | 2/2 | 20/20 | |
| 第二周 | 140/160 | 2/4 | 18/38 | |
| 第三周 | 113/273 | 1/5 | 20/58 | |
| 第四周 | 335/608 | 1/6 | 20/78 | |
| 第五周 | 1159/1408 | 1/7 | 30/108 | |
| 第六周 | 452/1860 | 1/8 | 20/128 |
轉(zhuǎn)載于:https://www.cnblogs.com/STILLlover521/p/6654815.html
總結(jié)
以上是生活随笔為你收集整理的20155302 2016-2017-2 《Java程序设计》第六周学习总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 搭建一个简单的FTP服务器
- 下一篇: Python全栈开发:web框架们