-
day17--Java常用类05
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; |
|
} |
|
|
|
|
|
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; |
|
|
|
} |
|
} |
|
} |
出处:https://www.cnblogs.com/liyuelian/p/16563068.html
栏目列表
最新更新
一个超经典 WinForm 卡死问题的再反思
C# 计算不规则多边形的相交/包含等关系
.NET Core 引发的异常:“sqlsugar.sqlsugarexcep
快速创建软件安装包-ClickOnce
nuget打包静态资源的问题
要写文档了,emmm,先写个文档工具吧——
乘风破浪,遇见最佳跨平台跨终端框架
【Windows版本控制】上海道宁为您提供Vi
available 处理办法
Visual Studio自定义背景图片
三大常用数据库事务详解之三:事务运行
三大常用关系型数据库事务详解之二:基
三大关系型数据库事务详解之一:基本概
MongoDB常用命令(2)
MongoDB基本介绍与安装(1)
SQLServer触发器调用JavaWeb接口
SQL Server索引的原理深入解析
SqlServer2016模糊匹配的三种方式及效率问题
SQL中Truncate的用法
sqlserver 多表关联时在where语句中慎用tri
在vscode中使用R时,用快捷键来快捷键入卡
VB.NET中如何快速访问注册表
ASP.NET中图象处理过程详解
Vue(1)Vue安装与使用
JavaScript 语言入门
js将一段字符串的首字母转成大写
纯原生html编写的h5视频播放器
H5仿原生app短信验证码vue2.0组件附源码地
TypeScript(4)接口
TypeScript(3)基础类型