1. 程式人生 > >java課後思考問題

java課後思考問題

有一個 har -h new 類型轉化 width -128 詳解 得到

---恢復內容開始---

1.一個Java類文件中真的只能有一個共有類嗎?

技術分享

技術分享

一個Java類文件中只能有一個公有類

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

技術分享

技術分享

在Java中,可以將一個類定義在另一個類裏面或者一個方法裏面,這樣的類稱為內部類。廣泛意義上的內部類一般來說包括這四種:成員內部類、局部內部類、匿名內部類和靜態內部類。內部類的詳解鏈接:http://www.cnblogs.com/dolphin0520/p/3811445.html

3.這裏關於公有類的結論是否同樣可用於接口?

Java中的接口是一系列方法的聲明,是一些方法特征的集合,一個接口只有方法的特征沒有方法的實現,因此這些方法可以在不同的地方被不同的類實現,而這些實現可以具有不同的行為(功能), 與Java的類文件一樣,接口文件的文件名必須與接口名相同。一個類可以有多個接口。

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

非靜態方法需要一個對象才能執行,而static方法只需類就可以執行。而main方法是程序剛開始就運行的程序,所以沒有對象,所以Java規定main方法是靜態的。

5.Java變量遵循“同名變量的屏蔽原則”,請課後閱讀相關資料弄清楚相關知識,然後自己編寫一些測試代碼,就象本示例一樣,有意識地在不同地方定義一些同名變量,看看輸出的到底是哪個值。

public class Test {

int a=1;
public static void main(String[] args) {
Test t=new Test();
B b=new B();
int a=2;
System.out.println("main().a="+a);
t .print_A();
b.print_B();

}
public void print_A(){
int a=4;
System.out.println("print_A().a="+a);
}

}
class B{
void print_B(){
int a=3;
System.out.println("print_B.a="+a);
}
}

技術分享

5.看著這個圖,再查查Java中每個數據類型所占的位數,和表示數值的範圍,你能得出什麽結論?

技術分享

技術分享 技術分享

Int 32位 取值範圍為 -2的31次方到2的31次方減1之間的任意整數(-2147483648~2147483647)

Short 16位 取值範圍為 -32768~32767之間的任意整數

long 64位 取值範圍為 -2的63次方到2的63次方減1之間的任意整數(-9223372036854774808~9223372036854774807)

float 32位 取值範圍為 3.402823e+38 ~ 1.401298e-45

double 64位 取值範圍為 1.797693e+308~ 4.9000000e-324

char 8位 取值範圍為 -128~127

byte 8位 取值範圍為 -128~127之間的任意整數

結論: java中數據類型所占位數越大,數值範圍越大。由低位數類型到高位數類型轉化,可能有精度損失。

6.請運行以下代碼(TestDouble.java)

public class TestDouble {

public static void main(String args[]) {
System.out.println("0.05 + 0.01 = " + (0.05 + 0.01));
System.out.println("1.0 - 0.42 = " + (1.0 - 0.42));
System.out.println("4.015 * 100 = " + (4.015 * 100));
System.out.println("123.3 / 100 = " + (123.3 / 100));
}
}

實驗結果:

0.05 + 0.01 = 0.060000000000000005

1.0 - 0.42 = 0.5800000000000001

4.015 * 100 = 401.49999999999994

123.3 / 100 = 1.2329999999999999

為什麽double類型的數值進行運算得不到“數學上精確”的結果?

我們給出的數值,在大多數情況下需要比64bit更多的位數才能準確表示出來(甚至是需要無窮多位),而double類型的數值只有64bit,後面舍去的位數一定會帶來誤

差,無法得到“數學上精確”的結果。

7.

以下代碼的輸出結果是什麽?

int X=100; int Y=200;

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

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

為什麽會有這樣的輸出結果?

java課後思考問題