對於可檢測異常,若是發生異常的方法不捕獲和處理這個異常,則必須在該方法定義的聲明頭中包含throws子句;php
System.out.in
:標準輸入流;System.out.out
:標準輸出流;System.out.err
:標準錯誤流(輸出錯誤信息);html
public class test { public static void main(String[] args) { StringTooLongException a = new StringTooLongException(""); System.out.println(a); } }
在這裏就能夠看見不少異常的方法,因此就能夠說明是一個對象,包含一個對象所具備一些性質;java
(2)由於咱們是到其實類都是object類的子類,因此在書裏有這樣一句話:git
Java預約義了一組程序執行中可能發生的異常和錯誤;web
因此咱們應當明白,其實也就能夠理解爲它是一個對象所擁有的一個性質。編程
問題2解決方案:既然是程序裏的一部分,因此我在想,假如程序運行,他會被拋出,會不會是程序就是輸出的一部分,或者就是一部分語句塊,想了不少中狀況,由於在後面講的捕捉異常,我感受它應該是是一個輸出的結果,或者就是一個檢測程序錯誤的部分。數組
問題3解決方案:
書裏是這樣解釋的:緩存
一個異常是一個定義非正常狀況或錯誤的對象;安全
錯誤相似異常,不一樣之處是錯誤表明不可恢復的問題而且必須捕獲處理。數據結構
感受這個概念書裏講的挺模糊的,就上網查了查:
問題4解決方案:
我目前尚未找到答案,感受這個問題本身太較真了,或者再後面仍是能夠利用自定義異常來編寫,因此感受問的這個問題價值不是很高,可是由於這個問題我仍是進行了思考的,因此仍是記錄下來。
System.err
和System.out
的具體用法?public class Test2 { static{ System.out.println("1"); } public static void main(String[] args) { System.err.println("2"); new Test2(); } public Test2() { System.out.println("3"); } }
實驗結果:
1,3的位置相對不變,2的位置隨機出現
import java.io.*; public class FileTest { public static void main(String[] args) throws IOException { //(1)文件建立(文件類實例化) File file = new File("C:\\Users\\besti\\Desktop\\FileTest","HelloWorld.txt"); if (!file.exists()){ file.createNewFile(); } //(2)文件讀寫 //第一種:字節流讀寫,先寫後讀 OutputStream outputStream1 = new FileOutputStream(file); byte[] hello = {'H','e','l','l','o',',','W','o','r','l','d','!'}; outputStream1.write(hello); InputStream inputStream1 = new FileInputStream(file); while (inputStream1.available()> 0){ System.out.print((char) inputStream1.read()+" "); } inputStream1.close(); //============================BufferedInputStream==================================== byte[] buffer = new byte[1024]; String content = ""; int flag = 0; InputStream inputStream2 = new FileInputStream(file); BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream2); while ((flag =bufferedInputStream.read(buffer))!=-1){ content += new String(buffer,0,flag); } System.out.println(content); bufferedInputStream.close(); //====================================BufferedOutputstream================================================ OutputStream outputStream2 = new FileOutputStream(file); BufferedOutputStream bufferedOutputStream2 = new BufferedOutputStream(outputStream2); String content2 = "寫入文件的緩衝區內容"; bufferedOutputStream2.write(content2.getBytes(),0,content2.getBytes().length); bufferedOutputStream2.flush(); bufferedOutputStream2.close(); //第二種:字符流讀寫,先寫後讀(兩種讀) Writer writer2 = new FileWriter(file); writer2.write("Hello, I/O Operataion!"); writer2.flush(); writer2.append("Hello,World"); writer2.flush(); BufferedWriter bufferedWriter = new BufferedWriter(writer2); String content3 = "使用bufferedWriter寫入"; bufferedWriter.write(content3,0,content3.length()); bufferedWriter.flush(); bufferedWriter.close(); Reader reader2 = new FileReader(file); System.out.println(); while(reader2.ready()){ System.out.print((char) reader2.read()+ " "); } BufferedReader bufferedReader = new BufferedReader(reader2); while ((content =bufferedReader.readLine())!= null){ System.out.println(content); } } }
問題1:在編寫一次課上做業的時候,第一次我是這樣編的,當時覺得對了,在最後一秒發現,這樣的編法沒有用遞歸...
問題1解決方案:在周圍同窗的忽然一點下,知道本身在後面的靜態方法裏沒有用遞歸,因此趕忙作出了改變:
ps:紅圈是第一次與第二次不一樣的地方,也是錯誤的地方。
import java.io.*; import java.util.Arrays; import java.util.Scanner; public class homework1 { public static void main(String[] args) throws IOException{ File file = new File("D:\\test","Test.txt"); if (!file.exists()){ file.createNewFile();} String a; Scanner scan = new Scanner(System.in); System.out.println("輸入幾個數字: "); a=scan.nextLine(); Writer writer = new FileWriter(file); writer.write(a); writer.flush(); Reader reader = new FileReader(file); System.out.println(); while (reader.ready()){ System.out.print((char)reader.read()+ ""); } String str = a.replaceAll(" ", ""); char[] b=new char[str.length()]; int in = 0; while (in<=str.length()-1) { b[in]=str.charAt(in); in++; } System.out.println(); insertionSort(b); System.out.println("排序後:" + Arrays.toString(b)); FileWriter fw = new FileWriter("D:\\test\\Test.txt"); String q = ""; for(int i=0;i<b.length;i++){ q += b[i] + ","; } fw.write(q); fw.flush(); fw.close(); } private static void insertionSort(char[] arr) { for (int i = 1; i < arr.length; i++) { int temp = arr[i]; int j = i - 1; while (j >= 0 && temp < arr[j]) { arr[j + 1] = arr[j]; j--; } arr[j + 1] = (char) temp; } } }
輸出結果後,是這個樣子的:
就出現問題了;
- 我雖然分開輸入了不一樣位數的數字,可是最後程序把它們分紅了一個個數字,也就是這個程序只能排列0~9之間的數字;
因而我就想着能不能把它們先分開,再將一個個總體寫入數組裏,就開始寫:
一、首先我用了這個語句String[] sourceStrArray = a.split(" ");
將其以空格做爲分界,把一個個分開之後存進數組;
二、後來就發現,一個是int類型的數組,一個是String型的數組,不匹配,因此就想着用Integer.parseInt
,可是有個問題,這個貌似不能用在數組裏,因此用了很長時間研究,用了這樣一段代碼實現了轉換:
int[] t = new int[b.length]; for (int i = 0; i < b.length; i++) { t[i] = Integer.parseInt(b[i]); }
而後輸出:
就ok啦!!
錯題1
Character streams manage
A. byte-sized data
B. binary data
C. Unicode characters
D. ASCII characters
E. compressed data
正確答案: C 個人答案: B
解析:字符流用於管理16位Unicode字符。這與字節流不一樣,後者用於管理任何種類的字節大小的數據,包括ASCII字符和其餘類型的二進制數據。
錯題2
A processing stream is a data stream that
A. can manage both input streams and output streams at the same time
B. performs some manipulation or process on the data
C. can only manage input streams
D. operates on input and output devices but not files
E. can manage byte streams and character streams at the same time
正確答案: B 個人答案: E
解析:數據流表示特定的源或目標流,用於輸入或輸出。處理流就像數據流,其中一些額外的處理被添加到輸入或輸出。例如,處理字節流可能會輸入文件中的全部項目,並刪除任何不是數字的ASCII字符,以便預期爲數字的輸入不會引起NumberFormatException。
錯題3
Assume infield is a Buffered Reader for a textile and that the textile is empty. What is returned from the message infile.readLine ( );
A. 0
B. null
C. a special character known as the End-of-file marker (EOF)
D. none of the above, the message causes a NullPointerException to be thrown
E. none of the above, the message causes a EndOfFileException to be thrown
正確答案: B 個人答案: D
解析:readLine()方法返回一個等於文件中下一個文本項的String。若是文件爲空,則返回null。
錯題4
Print Writer is a better output stream class that Print Stream because Print Writer
A. has both print and println methods and PrintStream only has print
B. can output both byte and character streams and PrintStream can only output byte streams
C. has error checking mechanisms as part of the class and PrintStream does not
D. will not throw checked exceptions and PrintStream will
E. all of the above
正確答案: C 個人答案: E
解析:PrintWriter類是一個Writer類,而PrintStream類是一個Stream類。主要區別在於PrintWriter專門用於文件,所以具備不屬於PrintStream的錯誤檢查機制。
代碼調試中的問題和解決過程, 一個問題加1分
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | |
---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 |
第一週 | 156/156 | 1/1 | 15/15 |
第二週 | 217/371 | 1/2 | 20/35 |
第三週 | 233/604 | 2/4 | 20/55 |
第四周 | 1382/1986 | 1/5 | 35/90 |
第五週 | 146/2196 | 1/6 | 25/115 |
第六週 | 462/2658 | 1/7 | 15/130 |
第七週 | 856/3514 | 1/8 | 20/150 |
第八週 | 1877/5391 | 3/11 | 20/170 |
第九周 | 1747/7138 | 1/12 | 20/190 |
Java程序設計
藍墨雲
java基礎(System.err和System.out)詳解
java的異常和錯誤有什麼區別
java中error和exception的區別