Java常用類 5.其他常用類 5.1Math類 java.lang.Math提供了一系列靜態方法用於科學計算;其方法的參數和返回值類型一般為double型。如果需要更加強大的數學運算能力,計算高等數學中相關內容,可以使用apache commons下麵的Math類庫。 package li.nor ...
Java常用類
5.其他常用類
5.1Math類
java.lang.Math提供了一系列靜態方法用於科學計算;其方法的參數和返回值類型一般為double型。如果需要更加強大的數學運算能力,計算高等數學中相關內容,可以使用apache commons下麵的Math類庫。
package li.normalclass.other;
public class TestMath {
public static void main(String[] args) {
System.out.println(Math.PI);//PI
System.out.println(Math.random());//隨機數
System.out.println(Math.abs(-5));//absolute 求絕對值
System.out.println(Math.floor(4.5));//向下取整 4.0
System.out.println(Math.ceil(4.5));//向上取整 5.0
System.out.println(Math.round(4.5));//四捨五入 5
System.out.println(Math.pow(2,5));//冪指數 2的5次方 32.0
System.out.println(Math.signum(-50.5));//判斷符號-->負數返回-1.0
System.out.println(Math.signum(123));//整數返回1.0
System.out.println(Math.signum(0));//0返回0.0
System.out.println(Math.sqrt(25));//開方 5.0
}
}
5.2Random類
Math中雖然為我們提供了產生隨機數的方法Math.random(),但是通常我們需要的隨機數並不是[0,1)之間的double類型的數據,這就需要對其進行一些複雜的運算。如果使用Math.random()計算過於複雜的話,我們可以使用額外一種方式得到隨機數,即Random類,這個類是專門用來生成隨機數的,並且Math.random()底層調用的就是Random類的nextDouble()方法。
構造方法:
Random() 創建一個新的隨機數生成器
Random(long seed) 使用單個long種子創建一個新的隨機數生成器
只要種子數和nextInt()中的參數一致的話,每次生成的隨機數列都是一樣的(偽隨機數)
例子:
package li.normalclass.other;
import java.util.Random;
/*
Math.random()底層調用的就是Random類的nextDouble()方法
產生[0,1)之間的隨機double數
*/
public class TestRandom {
public static void main(String[] args) {
//隨機數的生成是從種子值開始。 如果反覆使用同一個種子,就會生成相同的數字系列,
// 產生不同序列的一種方法是使種子值與時間相關
Random rand = new Random(System.nanoTime());
for (int i = 0; i < 10; i++) {
//System.out.println(rand.nextDouble());
System.out.println(rand.nextInt(20));//[0,20)
}
//生成一個從[10,20]的隨機整數
//思路:即[10,21)----即[0,11)+10
for (int i = 0; i < 10; i++) {
System.out.println(rand.nextInt(11)+10);
}
}
}
5.3枚舉
JDK1.5引入枚舉類型。枚舉類型的定義包括枚舉聲明和枚舉體。枚舉體就是放置一些常量。定義枚舉要使用關鍵字enum關鍵字。對於性別、季節、星期幾等內容,如果定義為字元串類型,是很難限制其取值的。採用枚舉可以輕鬆解決該問題。
所有的枚舉類型隱形地繼承自java.lang.Enum。枚舉類型實質上還是類!而每個被枚舉的成員實質就是一個枚舉類型的實例,它們預設都是pubilc static final 修飾的。可以直接通過枚舉類型名使用它們
註意:
- 當你需要定義一組常量時,儘量枚舉類型
- 另外儘量不要使用枚舉的高級特性
例子:
- 定義枚舉
- 變數定義為枚舉類型
- 枚舉變數的賦值
package li.normalclass.other;
//性別的枚舉定義
public enum Gender {
男,女
}
package li.normalclass.other;
public class Person {
private String name ;
private Gender sex ;//變數定義為枚舉類型
public Person() {
}
public Person(String name, Gender sex) {
this.name = name;
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Gender getSex() {
return sex;
}
public void setSex(Gender sex) {
this.sex = sex;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", sex='" + sex + '\'' +
'}';
}
}
package li.normalclass.other;
public class Application {
public static void main(String[] args) {
// 使用枚舉類來定義性別
Person person = new Person("張三",Gender.男);//枚舉變數的賦值
System.out.println(person);
}
}
例子2:
package li.normalclass.other;
public enum Season {
春,夏,秋,冬
}
package li.normalclass.other;
public class TestSeason {
public static void main(String[] args) {
//定義一個枚舉變數
Season season ;
//給枚舉變數賦值
season = Season.冬;
//switch
switch(season){
case 春:
System.out.println("踏青 放風箏 春意盎然");break;
case 夏:
System.out.println("吃西瓜 吃冰淇淋 夏日炎炎");break;
case 秋:
System.out.println("賞菊 登高 秋高氣爽");break;
case 冬:
System.out.println("滑冰 打雪仗 寒冬臘月");break;
}
}
}