1. 程式人生 > >Java 習題7和習題10 參考答案及解析

Java 習題7和習題10 參考答案及解析

請說出下列程式的輸出結果。

import java.io.IOException;

public class E {
    public static void main(String args[]) {
        try {
            methodA();
        } catch (IOException e) {
            System.out.println("你好");
            return;
        } finally {
            System.out.println("fine thanks"
); } } public static void methodA() throws IOException { throw new IOException(); } }

答案:你好
fine thanks
一個方法在宣告時可以使用throws關鍵字宣告要產生的若干個異常,並在該方法的方法體中具體給出產生異常的操作,即用相應的異常類建立物件,並使用throw關鍵字丟擲異常物件,導致該方法結束執行。try-catch語句捕獲到這個異常,輸出你好。
在執行try-catch語句後,執行finally子語句,也就是說,無論在try部分是否發生過異常,finally子語句都會被執行。
如果在try-catch語句中執行了return語句,那麼finally子語句依然會被執行,
try-catch語句中執行了程式退出程式碼,即執行System.exit(0);,則不執行finally子語句。

問答題

(1)如果準備按位元組讀取一個檔案的內容,應當使用FileInputStream流還是FileReader流?
(2)FileInputStream流的read方法和FileReader流的read方法有何不同?
(3)BufferedReader流能直接指向一個檔案嗎?

問答題解析

1.使用FileInputStream。
2.FileInputStream按位元組讀取檔案,FileReader按字元讀取檔案。
3.不可以。

選擇題

(1)下列哪個敘述是正確的?
A. 建立File物件可能發生異常。
B. BufferedRead流可以指向FileInputStream流
C. BufferedWrite流可以指向FileWrite流
D.RadomAccessFile流一旦指向檔案,就會重新整理該檔案

(2)為了向檔案hello.txt尾加資料,下列哪個是正確建立指向hello.txt的流?
A. try{ OutputStream out = new FileOutputStream(“hello.txt”);
}
catch(IOException e){}
B. try { OutputStream out = new FileOutputStream(“hello.txt”,true);
}
catch(IOException e){}
C.try{ OutputStream out = new FileOutputStream(“hello.txt”,false);
}
catch(IOException e){}
D.try{ OutputStream out = new OutputStream(“hello.txt”,true);
}
catch(IOException e){}

選擇題解析

(1).答案:C
建立File物件不會發生異常,建立新檔案的時候會發生IOException異常。
BufferedRead流只能指向FileRead流,它們都是以字元讀取資料的。
RadomAccessFile流指向檔案時,不重新整理檔案。

(2)答案:B
FileOutputStream類是檔案位元組輸出流,它是OutputStream類的子類,所以FileOutputStream的例項方法都是從OutputStream類繼承來的,那麼在這道題中需要使用上轉型物件才能呼叫重寫父類的方法,排除D。ABC在於FileOutpurStream的構造方法的不同,題目要求向檔案尾加資料,A選項是具有重新整理功能的構造方法,也就是會覆蓋掉原來檔案的資料,B選項引數為true表示不會重新整理所指向的檔案,而是從檔案的末尾開始向檔案寫入資料,取值為false,輸出流將重新整理所指向的檔案。

閱讀程式題

請說出E類中標註的【程式碼1】~【程式碼4】的輸出結果。

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class E {
    public static void main(String args[]) {
        int n = -1;
        File f = new File("hello.txt");
        byte[] a = "abcd".getBytes();
        try {
            FileOutputStream out = new FileOutputStream(f);
            out.write(a);
            out.close();
            FileInputStream in = new FileInputStream(f);
            byte[] tom = new byte[3];
            int m = in.read(tom, 0, 3);
            System.out.println(m);          //【程式碼1】
            String s = new String(tom, 0, 3);
            System.out.println(s);            //【程式碼2】
            m = in.read(tom, 0, 3);
            System.out.println(m);            //【程式碼3】
            s = new String(tom, 0, 3);
            System.out.println(s);            //【程式碼4】
        } catch (IOException e) {

        }
    }

}

答案:【程式碼1】:3。【程式碼2】:abc。【程式碼3】:1。【程式碼4】:dbc。

getBytes方法將此字串編碼為位元組序列,將結果儲存到新的位元組陣列中,之後用輸出流將位元組陣列a中的內容寫入到了檔案hello.txt中;之後宣告一個新的byte陣列com大小為3個位元組,使用輸入流的read方法,從陣列com的第0個位置開始,依次從檔案中讀取3個位元組寫入陣列中,返回實際讀取的位元組數目。所以【程式碼1】輸出3;之後用宣告一個String物件,使用了帶三個引數的構造方法,從位元組陣列的第0個位置開始,提取出3個位元組建立一個新的String物件;那麼【程式碼2】輸出的結果就是abc,只要不關閉流,每次呼叫read方法就順序地讀取源中其餘的內容,直到源的末尾或流被關閉。
所以再次呼叫read方法只讀取了剩餘的一個字元d寫入到tom陣列的第0個位置上,返回實際讀取的位元組數目為1,所以【程式碼3】返回1,此時再新宣告一個String物件,還是從tom的第0個位置開始提取3個位元組,那麼輸出的結果就應該是dbc。

相關推薦

Java 習題7習題10 參考答案解析

請說出下列程式的輸出結果。 import java.io.IOException; public class E { public static void main(String args[]) { try {

Java 習題1 參考答案解析

1.問答題 (1).Java語言的主要貢獻者是誰? (2)開發Java應用程式需要經過哪些主要步驟? (3)Java原始檔是由什麼組成的?一個原始檔中必須要有public類嗎? (4)如果JDK的安裝目錄是D:\jdk,應當怎樣設定path和classp

Java 習題6 參考答案解析

1.問答題 介面中能宣告變數嗎? 介面中能定義非抽象方法嗎? 什麼叫介面的回撥? 介面中的常量可以不指定初值嗎? 可以在介面中只宣告常量,不宣告抽象方法嗎? 問答題解析 不能。 不能。 可以把實現某一介面的類,所建立的物件的引用,賦給該介面宣

習題 7.5 有10個學生,每個學生的資料包括學號、姓名、3門課的成績,從鍵盤輸入10個學生資料,要求打印出3門課的總平均成績,以及最高分的學生的資料。

C++程式設計(第三版)譚浩強 習題7.5 個人設計 習題 7.5 有10個學生,每個學生的資料包括學號、姓名、3門課的成績,從鍵盤輸入10個學生資料,要求打印出3門課的總平均成績,以及最高分的學生的

Java 習題4 答案解析

問答題 (1)面嚮物件語言有哪三個特性? (2)類名應當遵守怎樣的程式設計風格? (3)變數和方法的名字應當遵守怎樣的程式設計風格? (4)類體內容中宣告成員變數是為了體現物件的屬性還是行為? (5)類體中定義的非構造方法是為了體現物件的屬性還是行為?

同時安裝Java 1.71.8

以前先安裝的java1.7 大部分程式應該都是隻支援1.7 不支援1.8 但是因為要跑一個別人的專案 要求是java1.8 所以想在電腦上同時裝1.7和1.8 到官網上下載1.8 安裝 安裝完成後 並沒有配置環境變數 但是發現java -version變成1.8了 要預設是

centos 7Windows 10雙系統啟動配置

在/boot/grub2/grub.cfg檔案中增加一個啟動項,如下: menuentry "Windows 10" --class windows --class os {         insmod part_msdos         insmod ntfs    

java資料結構演算法10(堆)

  這篇我們說說堆這種資料結構,其實到這裡就暫時把java的資料結構告一段落,感覺說的也差不多了,各種常見的資料結構都說到了,其實還有一種資料結構是“圖”,然而暫時對圖沒啥興趣,等有興趣的再說;還有排序演算法,emmm....有時間再看看吧!   其實從寫資料結構開始到現在讓我最大的感觸就是:新手剛開始還是不

安卓進階(7)之OkHttp3.10攔截器原理解析

部落格流程 用一個demo介紹如何新增自定義的攔截器; 介紹攔截器是怎麼產生攔截效果的; 介紹okhttp裡預設的各個攔截器的作用。 新增自定義的log攔截器 在使用okhttp時,我們可能需要獲取

Java 靜態代理動態代理的使用原理解析

代理模式是軟體開發中常見的設計模式,它的目的是讓呼叫者不用持有具體操作者的引用,而是通過代理者去對具體操作者執行具體的操作。 靜態代理的實現 操作介面: public interface Operate { void doSomething(); } 複製程式碼 操作者: public cla

java 棧記憶體 堆 記憶體的涵義使用範圍

class FunctionDemo {     /*陣列記憶體空間的區域劃分\     1、暫存器     2、本地方法區     3、方法區     4、棧記憶體         //棧記憶體的涵義:         1、儲存的區域性變數  ----區域性變數對應的

初賽答案解析 by Caristra

單項選擇題: T1T_1T1​.DDD 考點:計算機常識 MySQLMySQLMySQL是一種資料庫系統 T2T_2T2​.AAA 考點:進位制轉換的計算方法 不難計算出 2A.58(16)=42.343752A.58(16)=42.343752A.58(16)

龍少的藍橋杯習題冊答案解析

入門訓練 BEGIN-1 A+B問題 入門 BEGIN-2 序列求和 入門 求和公式 BEGIN-3 圓的面積 入門 實數輸出 BEGIN-4 Fibonacci數列 入門 數列 取模 基礎練習 BASIC-1 閏年判斷 條件判斷 BASIC-2 01字串 迴圈 BASIC-3

AWS助理架構師認證考試樣題答案解析

SAA樣題分享——與正式考試難度相同: 1.一個位於EC2上執行的資料庫例項,資料庫軟體備份功能需要快儲存支援,備份資料的最低成本儲存選項是什麼? A .Amazon Glacier B .EBS Cold HDD卷 C .Amazon S3 D .EBS吞吐量

Python程式設計師面試必備常用問題答案解析

在公佈《Python軌範員面試,這些問題你必需提早預備!》一文後,應泛博軌範員伴侶的強烈要求,小編就Python軌範員面試必備問題清算了一份參考謎底,希望能對預備換工作的軌範員伴侶有所輔佐。如對謎底有疑問,接待留言會談。 小編將這些面試問題大抵分為四類: 什麼(what)?若何做(how)?

Java中byte做&0xff運算的原因解析

Java中byte資料使用到&0xff的原因及解析 第一種情況:signed/unsigned之間的轉化 java中,除了char是unsigned 兩個位元組,用來表達UTF-16,此外byte/short/int/long都是signed

10、第二章物理層習題參考答案

1、計算函式 f(t)=t (0 ≦ t ≦ 1)的傅立葉係數。 解:an =-1/πn, bn = 0, c = 1。 2、每1毫秒對一條無噪聲4kHz通道取樣一次。試問最大資料傳輸率是多少?如果通道上有噪聲,且信噪比是30dB,試問最大資料速率該如何變化? 解:一個無噪聲的通道不管多

Java第三章習題3-7(1到n的階乘

Find.java /* * To change this template, choose Tools | Templates * and open the template in the ed

《x86匯編語言:從實模式到保護模式》檢測點習題答案

style 出現 x86匯編 內存操作 3.1 fff 地址 blog strong 檢測點1.1:按順序分別為:13 15 78 255 128 56091 檢測點1.2:按順序分別為:1000 1010 1100 1111 11001 1000000

python實現周志華西瓜書《機器學習》習題3.4 對比10折交叉驗證留一法的對率迴歸錯誤率

這道題仍然在抄大神程式碼的基礎上寫註釋,首先感謝原始碼: https://blog.csdn.net/Snoopy_Yuan/article/details/64131129 感想是:sklearn是個好東西,如果沒有現成的驗證方法,光是10折驗證就要造10個表格才行,而用現成的庫,一