課程作業之動手動腦
一.Java變量的“同名變量的屏蔽原則”:
兩個或多個同名變量,定義了不同的數值時,在使用時,在使用的區間內,變量的值為距其最近(前面)的定義。
程序:
結果:
二. Java中的類型轉換
nt 32位帶符號整數 -2的31次方到2的31次方-1之間的任意整數
float 32位單精度浮點數,double 64位雙精度浮點數。
char 8位二進制數範圍是 -2的7次方到2的7次方-1
byte 8位帶符號整數 -128到127之間的任意整數
short 16位無符號整數 -32768到32767之間的任意整數
long 64位帶符號整數 -2的63次方到2的63次方-1之間的任意整數
結論:java自動完成從低級類型向高級類型轉換,即取值範圍相對較小的數據類型轉換成取值範圍相對較大的數據類型。
三.請運行以下代碼,看到了什麽樣的輸出,意外嗎?
為什麽double類型的數值進行運算得不到“數學上精確”的結果?
事實上浮點運算很少是精確的,只要是超過精度能表示的範圍就會產生誤差。往往產生誤差不是 因為數的大小,而是因為數的精度。因此,產生的結果接近但不等於想要的結果。尤其在使用 float 和 double 作精確運 算的時候要特別小心。可以考慮采用一些替代方案來實現。如通過使用 long 類型來轉換。我們知道在計算機中浮點數的表示方法是由一個整數(即尾數)乘以一個基數(計算機中一般為2)的整次冪得到。(類似於科學計數法,科學記數法基數為10)float的內存結構為:符號位表示正負,1位 指數位,8位 尾數位,32位(符號位1表示負,0表示正)指數是以2為底的,範圍是 -128 到 127,如果超過了127,則從-128開始計。 即:127+1=-128尾數都省去了第1位的1,所以在還原時要先在第一位加上1。它可能包含整數和純小數兩部分,也可能只包含其中一部分,視數字大小而定。對於帶有整數部分的浮點數,其整數的表示法有兩種,當整數大於十進制的16777215時使用的是科學計數法,如果小於或等於則直接采用一般的二進制表示法。科學計數法和小數的表示法是一樣的。小數部分則是直接使用科學計數法,形式是X * ( 2 ^ n )。這樣就導致浮點類型在計算機的存貯中無法精確表示。
四.以下代碼的輸出結果是什麽?
int X=100;
int Y=200;
System.out.println("X+Y="+X+Y);
System.out.println(X+Y+"=X+Y");
為什麽會有這樣的輸出結果?
運行結果:
原因:
System.out.println("X+Y="+X+Y);其中 + 為連接運算符
System.out.println(X+Y+"=X+Y");其中 + 為加法運算符,為兩個數相加
課程作業之動手動腦