課程作業02 將課程中的所有動手動腦的問題以及課後實驗性的問題,整理成一篇文檔。
一個Java類文件中真的只能有一個公有類嗎?
請使用Eclipse或javac檢測一下以下代碼,有錯嗎?
public class Text { public static void main(String[] args) { public class InnerClass{ } } }
經檢驗一個Java類文件中只能有一個公有類。java程序是從一個public類的main函數開始執行的,就像C程序是從main()函數開始執行一樣。public類只能定義在以它的類名為文件名的文件中。每個編譯單元(文件)都只有一個public類。因為每個編譯單元都只能有一個公共接口,用public類來表現。該接口可以按照要求包含眾多的支持包訪問權限
把main()方法的返回值由 void 改為 int ,程序能編譯通過嗎?能運行嗎?
不能運行,因為沒有返回值。
為什麽java規定作為程序入口點的main() 方法靜態的?
非靜態成員函數在執行前必須先構造並實例化該函數所在的類。如果允許非靜態的main,那麽main函數所在的類必須先進行實例化,那麽就需要再寫個函數去實例化
Java變量遵循“同名變量的屏蔽原則”,請課後閱讀相關資料弄清楚相關知識,然後自己編寫一些測試代碼,就象本示例一樣,有意識地在不同地方定義一些同名變量,看看輸出的到底是哪個值。
成員變量和局部變量的區別:
成員變量:
①成員變量定義在類中,在整個類中都可以被訪問。
②成員變量隨著對象的建立而建立,隨著對象的消失而消失,存在於對象所在的堆內存中。
③成員變量有默認初始化值。
局部變量:
①局部變量只定義在局部範圍內,如:函數內,語句內等,只在所屬的區域有效。
②局部變量存在於棧內存中,作用的範圍結束,變量空間會自動釋放。
③局部變量沒有默認初始化值
在使用變量時需要遵循的原則為:就近原則。首先在局部範圍找,有就使用;接著在成員位置找。然後在主函數裏面創建對象並輸出。
示例:
public class Person { private int age=1000; public void setAge(int age) { age=age; System.out.println("方法內的年齡"+age); } public void sayHello() { System.out.println("我的年齡是"+age+"."); } public static void main(String[] args) { Person p=new Person(); p.setAge(20); p.sayHello(); } }
運行結果:
為什麽double類型的數值進行運算得不到“數學上精確”的結果?
double類型的數值占用64bit,即64個二進制數,除去最高位表示正負符號的位,在最低位上一定會與實際數據存在誤差(除非實際數據恰好是2的n次方。簡單來說就是我們給出的數值,在大多數情況下需要比64bit更多的位數才能準確表示出來(甚至是需要無窮多位),而double類型的數值只有64bit,後面舍去的位數一定會帶來誤差,無法得到“數學上精確”的結果。
以下代碼的輸出結果是什麽?
int X=100;
int Y=200;
System.out.println("X+Y="+X+Y);
System.out.println(X+Y+"=X+Y");
為什麽會有這樣的輸出結果?
輸出結果:
因為+的默認含義不同,第一個由於在“”之後默認為進行數據的鏈接。而第二則是在前面默認為加法運算。
課程作業02 將課程中的所有動手動腦的問題以及課後實驗性的問題,整理成一篇文檔。