十一java作業2
動手動腦
1.枚舉類型
枚舉類型 enum Size{ SMALL , MEDIUM , LARGE }
使用: Size s=Size.SMALL;
//從字串轉換為枚舉 Size t=Size.valueof(“SMALL”);
註意:枚舉類型僅適用於JDK 5.0及更新的版本.
枚舉值的foreach叠代
private enum MyEnum{
ONE, TWO, THREE
}
public static void main(String[] args) {
for(MyEnum value:MyEnum.values()){
System.out.println(value);
}
}註意:枚舉可用於switch語句中。
public class EnumTest {
public static void main(String[] args) {
Size s=Size.SMALL;
Size t=Size.LARGE;
//s和t引用同一個對象?
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};
枚舉類型是引用類型!
枚舉不屬於原始數據類型,它的每個具體值都引用一個特定的對象。相同的值則引用同一個對象。
可以使用“==”和equals()方法直接比對枚舉變量的值,換句話說,對於枚舉類型的變量,“==”和equals()方法執行的結果是等價的。
2.
以下代碼的輸出結果是什麽?
int X=100;
int Y=200;
System.out.println("X+Y="+X+Y);
System.out.println(X+Y+"=X+Y");
為什麽會有這樣的輸出結果?
第一個只是依次輸出x y的值第二個是先運算x+y的值在輸出,若使第一個輸出值須加括號。
動手實驗
1
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));
}
}
使用double類型的數值進行計算, 其結果是不精確的。
為什麽double類型的數值進行運算得不到“數學上精確”的結果?
double類型的數值占用64bit,即64個二進制數,除去最高位表示正負符號的位,在最低位上一定會與實際數據存在誤差(除非實際數據恰好是2的n次方)。
import java.math.BigDecimal;
public class TestBigDecimal
{
public static void main(String[] args)
{
BigDecimal f1 = new BigDecimal("0.05");
BigDecimal f2 = BigDecimal.valueOf(0.01);
BigDecimal f3 = new BigDecimal(0.05);
System.out.println("下面使用String作為BigDecimal構造器參數的計算結果:");
System.out.println("0.05 + 0.01 = " + f1.add(f2));
System.out.println("0.05 - 0.01 = " + f1.subtract(f2));
System.out.println("0.05 * 0.01 = " + f1.multiply(f2));
System.out.println("0.05 / 0.01 = " + f1.divide(f2));
System.out.println("下面使用double作為BigDecimal構造器參數的計算結果:");
System.out.println("0.05 + 0.01 = " + f3.add(f2));
System.out.println("0.05 - 0.01 = " + f3.subtract(f2));
System.out.println("0.05 * 0.01 = " + f3.multiply(f2));
System.out.println("0.05 / 0.01 = " + f3.divide(f2));
}
}
註意:在構建BigDecimal對象時應使用字符串而不是double數值,否則,仍有可能引發計算精度問題。
十一java作業2