day17--Java常用类05
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; } } }

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!