java問題問題(java有問題怎麼辦)

本文目錄一覽:

Java中的一些問題

1.定義變數時至少應指出變數名和類型嗎?

答:必須給出名稱和類型。

2.定義變數時沒有給出初值,該變數可能是無意義的值嗎??

答:類的成員變數會給出默認值,基本數據類型會是0,對象是null。局部變數不可以沒有初始值

3.定義變數同一個類型,多個變數可用逗號分隔嗎?

答:可以。

4.定義變數時必須要給變數初始化嗎??

答:成員變數可以不必初始化,局部變數一定要初始化。

5.定義變數而沒初始化時,該變數與默認值嗎??

答:成員變數有初始值,局部變數沒有

6.字元型變數的默認值為換行符嗎?

答:是

7.布爾型變數的默認值為真嗎?

答:false

8.變數的默認值是可以改變的嗎??

答:可以改變。

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疑難問題

最後一題

計算的結果是

94269001683709979260859834124473539872070722613982672442938359305624678223479506023400294093599136466986609124347432647622826870038220556442336528920420940313

代碼

import java.math.BigInteger;

public class Main

{

public static void main (String[] args)

{

BigInteger sum = new BigInteger(“0”);

for (int i = 1; i = 100; i++)

{

sum = sum.add(fun(i));

}

System.out.println(sum);

}

private static BigInteger fun(int times)

{

BigInteger bi = new BigInteger(“1”);

for (int i = 2; i = times; i++)

{

bi = bi.multiply(new BigInteger(String.valueOf(i)));

}

return bi;

}

}

其他的你分開問,一次太多了

解答一下有關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問題

這裡直接把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面試中經常被問到的問題有哪些?

java面試中經常被問到的問題有如下:

1、簡述string對象,StringBuffer、StringBuilder區分。

2、多態的原理。

3、簡要描述面向對象編程的思想。

4、反射的原理。

5、java.util包的UML結構圖。

6、Vector和ArrayList、LinkedList區別。

7、Hashtable和HashMap之間的區別。

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-11 17:11
下一篇 2024-12-11 17:11

相關推薦

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

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

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

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

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

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

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

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

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

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

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

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

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

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

    編程 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

發表回復

登錄後才能評論