1、Enum:通常用來表示一組相同類型的常量。對這些屬性用常量的好處是顯而易見的,不只能夠保證單例,且比較時候能夠用」==」來替換equals,枚舉對象裏面的值都必須是惟一的。java
代碼:編程
public class EnumTest編程語言
{搜索引擎
public static void main(String[] args)spa
{翻譯
Size s=Size.SMALL;對象
Size t=Size.LARGE;//s和t引用同一個對象?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位 取值範圍爲 -2的31次方到2的31次方減1之間的任意整數(-2147483648~2147483647)
2.Short 16位 取值範圍爲 -32768~32767之間的任意整數
3.long 64位 取值範圍爲 -2的63次方到2的63次方減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類型的數值進行運算得不到「數學上精確」的結果?
首先得從計算機自己討論這個問題。計算機並不能識別除了二進制數據之外的任何數據。不管咱們使用何種編程語言,在何種編程環境下工做,都要先把源程序翻譯成二進制的機器碼後才能被計算機識別。事實上,浮點數並不適合用於精確計算,而適合進行科學計算。Float和double型用來表示帶有小數點的數,這些數都以科學計數法的形式存儲。當一個數如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結合成一個新的字符串。