1. 程式人生 > >01.JAVA語言基礎相關解答

01.JAVA語言基礎相關解答

整型 無法識別 ati 基礎相關 默認 ges 計算器 都是 isp

1.首先,第一個問題談到一個java類文件中真的只能有一個公有類嗎?並給出了以下代碼。可以看出這個程序裏有兩個public類:

我進行了不同的調試:

技術分享技術分享 技術分享技術分享

可以看出 如果只在第一個public類裏面定義實體,或者兩個都不定義並沒有報錯且程序可以運行。確實,每個編譯單元(文件)只能有一個public 類。這麽做的意思是,每個編
譯單元只能有一個公開的接口,而這個接口就由其public 類來表示。如果能有多個public類,程序就無法識別該從哪裏導入程序了。上面這個程序 出現了主類 和一般公共類,第二個類為一般公共類。主要是分清公共類和主類,主類及主函數。ava類文件中並非只能有一個公有類,可以有多個內部類,它可以是共有的。

技術分享其中只能有一個public表示主類,其余的可以表示公共類,但要註意語法。

2 . .技術分享

技術分享技術分享

編譯不能通過。於是我進行了下面的編譯:

技術分享答案如圖。

3.技術分享

static關鍵字,告知編譯器main函數是一個靜態函數。也就是說main函數中的代碼是存儲在靜態存儲區的,即當定義了類以後這段代碼就已經存在了。如果main()方法沒有使用static修飾符,那麽編譯不會出錯,但是如果你試圖執行該程序將會報錯,提示main()方法不存在。因為包含main()的類並沒有實例化(即沒有這個類的對象),所以其main()方法也不會存。而使用static修飾符則表示該方法是靜態的,不需要實例化即可使用。

4.

.技術分享

技術分享 技術分享

5.

技術分享

int short long byte 表示整數,其值是精確的,而float double均為浮點型,表示近似值,所以當整型轉換成浮點類型的近似值會有精度損失。而ASCLL都是整數,所以char轉換成整型不會有精度損失。

6 . 技術分享

. 技術分享

技術分享

因為java中十進制與二進制轉化時存在問題,double類型的數值占 用64bit,即64個二進制數,除去最高位表示正負符號的位,在最低 位上一定會與實際數據存在誤差,簡單來說就是我們給出的數值,在 大多數情況下需要比64bit更多的位數才能準確表示出來(甚至是需 要無窮多位),而double類型的數值只有64bit,後面舍去的位數一定會帶來誤差,無法得到“數學上精確”的結果。

7. 技術分享

答:在使用BigDecimal(double)構造器時,使用不恰當會出現精確的誤差,二進制浮點數的局限性產生類似上述的問題。

8.

涉及代碼:

public class Test {

public static void main(String[] args) {

int X=100;

int Y=200;

System.out.println("X+Y="+X+Y);

System.out.println(X+Y+"=X+Y");

}運行結果:

技術分享

當"X+Y="在前時,默認的把int型X,Y轉化為String型,"X+Y="使編譯器認為X,Y是String型的了,System.out.println()本身的參數默認為String型,遇到這種情況默認了轉化,產生了如此結果,而第二個就是簡單的輸出,沒有讓計算器產生“誤解”。

01.JAVA語言基礎相關解答