JAVA課堂-動手動腦1

1、Enum通常用來表示一組相同類型的常量。對這些屬性用常量的好處是顯而易見的,不只能夠保證單例,且比較時候能夠用」==」來替換equals枚舉對象裏面的值都必須是惟一的。java

代碼:編程

public class EnumTest編程語言

{搜索引擎

     public static void main(String[] args)spa

    {翻譯

           Size s=Size.SMALL;對象

           Size t=Size.LARGE;//st引用同一個對象?blog

           System.out.println(s==t);  ////是原始數據類型嗎?索引

           System.out.println(s.getClass().isPrimitive());//從字符串中轉換作用域

           Size u=Size.valueOf("SMALL");

           System.out.println(s==u);  //true列出它的全部值

           for(Size value:Size.values())

           {       //遍歷

               System.out.println(value);

           }

        }

 }

enum Size{SMALL,MEDIUM,LARGE};  //枚舉類型定義數據只有三個取值範圍

運行結果:

 

 

 

結論:枚舉類型是引用類型!枚舉不屬於原始數據類型,它的每一個具體值都引用一個特定的對象。相同的值則引用同一個對象。

 

二.數值的二進制表示

閱讀相應教材,或者使用互聯網搜索引擎,弄清楚反碼、補碼跟原碼這幾個概念,而後編寫示例程序,對正數、負數進行各類位操做,觀察輸出結果,與手工計算的結果進行比對,看看Java中的數是採用上述哪一種碼錶示的。

 

在計算機內,定點數有3種表示法:原碼、反碼和補碼。反碼是數值存儲的一種,可是因爲補碼更能有效表現數字在計算機中的形式,因此多數計算機通常都不採用反碼錶示數。

()原碼:二進制的定點表示法,即最高位爲符號位,「0」表示正,「1」表示負,其他位表示數值的大小。

()2、反碼:正數的反碼與其原碼相同;負數的反碼是對其原碼逐位取反,但符號位除外。

()3、補碼:正數的補碼與其原碼相同,負數的補碼是在其反碼末位加1

3變量的做用域

每一個變量都有一個有效的區域(稱爲做用域),出了這個區域,變量將再也不有效。

 

請看左邊的示例代碼,輸出結果是什麼?

 

4.Java中的類型轉換

 

 

 看着這個圖,再查查Java中每一個數據類型所佔的位數,和表示數值的範圍,你能得出什麼結論?

1.Int          32       取值範圍爲 -231次方到231次方減1之間的任意整數(-2147483648~2147483647)
2.Short       16      取值範圍爲 -32768~32767之間的任意整數
3.long        64       取值範圍爲 -263次方到263次方減1之間的任意整數         (-9223372036854774808~9223372036854774807)
4.float        32       取值範圍爲 3.402823e+38 ~ 1.401298e-45
5.double      64       取值範圍爲 1.797693e+308~ 4.9000000e-324

6.char        8位       取值範圍爲  -128~127
7.byte        8      取值範圍爲 -128~127之間的任意整數

結論:不一樣數據類型進行類型轉換時可能會有精度的缺失,所以要注意各類類型的取值範圍。

5.請運行如下代碼(TestDouble.java

你看到了什麼樣的輸出,意外嗎?

結論:

使用double類型的數值進行計算, 其結果是不精確的。

6.爲何double類型的數值進行運算得不到數學上精確的結果?

  首先得從計算機自己討論這個問題。計算機並不能識別除了二進制數據之外的任何數據。不管咱們使用何種編程語言,在何種編程環境下工做,都要先把源程序翻譯成二進制的機器碼後才能被計算機識別。事實上,浮點數並不適合用於精確計算,而適合進行科學計算。Floatdouble型用來表示帶有小數點的數,這些數都以科學計數法的形式存儲。當一個數如50.534,轉換成科學計數法的形式爲5.053e1,它的小數點移動到了一個新的位置(即浮動)可見,浮點數原本就是用於科學計算的,用來進行精確計算實在是太不合適了!

7.如下代碼的輸出結果是什麼?

int X=100;

int Y=200;

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

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

代碼:

public class Plus

 {

     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");

     }

}

結果截圖:

 

結論:System.out.println()中,若是string字符串後面是+和變量,會自動把變量轉換成string類型,加號起鏈接做用,而後把兩個字符串鏈接成一個新的字符串輸出;若是先有變量的加減運算再有字符串,那麼會從左到右先計算變量的加減,而後再與後面的string結合成一個新的字符串。

相關文章
相關標籤/搜索