1. 程式人生 > >課程作業02 將課程中的所有動手動腦的問題以及課後實驗性的問題,整理成一篇文檔。

課程作業02 將課程中的所有動手動腦的問題以及課後實驗性的問題,整理成一篇文檔。

mil http 所有 ble images out 單元 運行 默認

一個Java類文件中真的只能有一個公有類嗎?

請使用Eclipse或javac檢測一下以下代碼,有錯嗎?

public class Text {
	public static void main(String[] args) {
public class InnerClass{
}
	}
}

經檢驗一個Java類文件中只能有一個公有類。java程序是從一個public類的main函數開始執行的,就像C程序是從main()函數開始執行一樣public類只能定義在以它的類名為文件名的文件中每個編譯單元(文件)都只有一個public類。因為每個編譯單元都只能有一個公共接口,用public類來表現。該接口可以按照要求包含眾多的支持包訪問權限

的類。如果有一個以上的public類,編譯器就會報錯。並且public類的名稱必須與文件名相同(嚴格區分大小寫)。當然一個編譯單元內也可以沒有public類。在一個源文件.java文件中可以有很多類,只有一個public類其他的都不能是在public類。如果有很多public類,那程序怎麽運行?

main()方法的返回值由 void 改為 int ,程序能編譯通過嗎?能運行嗎?

不能運行,因為沒有返回值。

為什麽java規定作為程序入口點的main() 方法靜態的?

非靜態成員函數在執行前必須先構造並實例化該函數所在的類。如果允許非靜態的main,那麽main函數所在的類必須先進行實例化,那麽就需要再寫個函數去實例化

main所在的類,再調用main如果這個實例化代碼也是非靜態的,又要寫個函數去實例化它所在的類。因此,java語言就規定了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 將課程中的所有動手動腦的問題以及課後實驗性的問題,整理成一篇文檔。