1. 程式人生 > >十一java作業2

十一java作業2

圖片 print primitive 方法 存在 4.0 新的 multipl jdk

動手動腦

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