java有關問題(Java的問題)

本文目錄一覽:

java問題

這裡直接把s賦值給readContent是有問題的,問題點如下:

假設文件有兩行

第一行

第二行

則讀取循環兩次,第一次s賦值給readContent,readContent的值為 “第一行”,然後又循環,讀取第二行,再次賦值,則readContent就會變成 “第二行”,第一行的值就丟失了;

這裡StringBuff的作用是把讀取到的內容連接起來成為一個字元串;

不過這裡的例子的確有問題,問題卻不在StringBuffer上,而在 s 變數上,s中間兩步是不必要的,循環內直接改成如下形式:

刪除s.getBytes()和new String

另外,除了以上問題,來總結下這段代碼的問題吧:

1、文件資源沒有釋放

2、在不涉及多線程的情況下,應使用StringBuilder類進行字元串拼接,而不是StringBuffer,因為StringBuilder更快(但是StringBuilder線程不安全,StringBuffer線程安全);

3、異常處理有問題,如果出現IO異常,就返回異常信息的字元串?那麼如何區分這個字元串是發生了異常還是從文件中讀取到的內容呢?這裡不應該返回字元串,而是直接聲明異常,有異常就向外拋,直到能處理的頂層程序處理。

基於以上幾點,修改代碼如下:

注意第27行,聲明本方法可能拋出 IOException 異常,稍後主程序將進行處理。另外注意第30行,創建InputStreamReader 的時候指定了文件編碼為utf8,以避免亂碼,你的文件如果存儲的是其他編碼類型,則會出現亂碼。

調用代碼如下:

getContent函數調用主程序

注意18行和21行,是分別處理正常情況和異常情況,當讀取異常時,將會調用第21行,列印異常信息;

整體代碼如下:

全部代碼

接下來我們看看代碼執行情況。

1、當我們要讀的文件不存在時,執行結果如下:

我們要讀的文件不存在時,拋出異常

看,當文件不存在時,拋出異常,並由異常處理程序捕獲和列印,你可以看到具體哪一行代碼出錯[getContent(App.java:29)],說明在App.java 文件中的getContent方法,文件的29行出錯。

2、那麼正常情況下呢?當然是輸出文件內容了,我們放一個有如下內容的文件在”D:\\file.txt”處:

要讀取的文件內容

執行結果如下:

正常情況下,輸出文件內容

最後,我不知道你看的是什麼書,是不是課本,但感覺質量不高,這裡給你推薦幾本,可以買來看看:

1、Head First java

2、菜鳥教程 Java

3、最權威的,自然是The Java® Language Specificati了

祝你學習之路順利

解答一下有關JAVA異常類的問題?

問題(1)可以改為Exception

問題(2)示情況而定是否可以改為IOException

原因,原語句中的try…catch..的語義是在try裡面的兩行語句中捕獲可能拋出的DangerException異常並加以處理,

(1). Exception是DangerException的父類,替換後語義變為了在try裡面的兩行語句中捕獲可能拋出的Exception異常並加以處理,語義是正確的;

(2). IOException不確定是不是DangerException的父類,替換後語義變為了在try裡面的兩行語句中捕獲可能拋出的IOException異常並加以處理,語義不一定正確,如果IOException是DangerException的父類,就是正確的,否則是錯誤的(在try裡面沒有IOException的類型可能被拋出),在編譯時會報錯(Exception ‘java.io.IOException’ is never thrown in the corresponding try block)

關於JAVA問題的解答

第1題 :下面哪個對類的聲明是錯誤的? (A),Java中沒有多繼承,C++有多繼承,Java只能多實現多個介面;

第2題 某一個子類要繼承一個父類,要使用關鍵字(extends )。

第3個題:下列說法正確的有( C)Java中new 的時候執行構造方法,至於執行哪一個看你new的哪一個構造方法

第4題:有以下方法的定義,請選擇該方法的返回類型( D)。java會自動向上轉型, (short) x/y*2;這個short強制轉型只是轉了x,並不是轉了結果

第5題:在方法內部使用,代表對當前對象自身引用的關鍵字是( this)。Java中this是對自己的引用,super向上調用

第6題:以下關於繼承的敘述正確的是(A )。在Java中類只允許單一繼承

第7題:一個非抽象子類,如果要實現某個介面,則( A)。必須實現該介面中的所有抽象方法

第8題:哪個關鍵字可以拋出異常? ( throw)。catch中用throw;方法上用throws

第9題:關於以下代碼段的說法正確的是( D)。這個雖然可以執行成功但是如果你要去判斷相等的話得到時false,string和StringBuffer有著本質的不同,一個不可變一個可變

第10題:下面關鍵字中,哪一個不是用於異常處理語句( break )。 break用於跳出循環

原創文章,作者:JSHSL,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/129517.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
JSHSL的頭像JSHSL
上一篇 2024-10-03 23:26
下一篇 2024-10-03 23:26

相關推薦

  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • Python官網中文版:解決你的編程問題

    Python是一種高級編程語言,它可以用於Web開發、科學計算、人工智慧等領域。Python官網中文版提供了全面的資源和教程,可以幫助你入門學習和進一步提高編程技能。 一、Pyth…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • 如何解決WPS保存提示會導致宏不可用的問題

    如果您使用過WPS,可能會碰到在保存的時候提示「文件中含有宏,保存將導致宏不可用」的問題。這個問題是因為WPS在默認情況下不允許保存帶有宏的文件,為了解決這個問題,本篇文章將從多個…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29

發表回復

登錄後才能評論