Java Math类、Random类、System类及BigDecimal类用法示例
本文实例讲述了Java Math类、Random类、System类及BigDecimal类用法。分享给大家供大家参考,具体如下:
Math类
Math的方法
package cn.itcast_01; /* * Math:用于数学运算的类。 * 成员变量: * public static final double PI * public static final double E * 成员方法: * public static int abs(int a):绝对值 * public static double ceil(double a):向上取整 * public static double floor(double a):向下取整 * public static int max(int a,int b):最大值 (min自学) * public static double pow(double a,double b):a的b次幂 * public static double random():随机数 [0.0,1.0) * public static int round(float a) 四舍五入(参数为double的自学) * public static double sqrt(double a):正平方根 */ public class MathDemo { public static void main(String[] args) { // public static final double PI System.out.println("PI:" + Math.PI); // public static final double E System.out.println("E:" + Math.E); System.out.println("--------------"); // public static int abs(int a):绝对值 System.out.println("abs:" + Math.abs(10)); System.out.println("abs:" + Math.abs(-10)); System.out.println("--------------"); // public static double ceil(double a):向上取整 System.out.println("ceil:" + Math.ceil(12.34)); System.out.println("ceil:" + Math.ceil(12.56)); System.out.println("--------------"); // public static double floor(double a):向下取整 System.out.println("floor:" + Math.floor(12.34)); System.out.println("floor:" + Math.floor(12.56)); System.out.println("--------------"); // public static int max(int a,int b):最大值 System.out.println("max:" + Math.max(12, 23)); // 需求:我要获取三个数据中的最大值 // 方法的嵌套调用 System.out.println("max:" + Math.max(Math.max(12, 23), 18)); // 需求:我要获取四个数据中的最大值 System.out.println("max:" + Math.max(Math.max(12, 78), Math.max(34, 56))); System.out.println("--------------"); // public static double pow(double a,double b):a的b次幂 System.out.println("pow:" + Math.pow(2, 3)); System.out.println("--------------"); // public static double random():随机数 [0.0,1.0) System.out.println("random:" + Math.random()); // 获取一个1-100之间的随机数 System.out.println("random:" + ((int) (Math.random() * 100) + 1)); System.out.println("--------------"); // public static int round(float a) 四舍五入(参数为double的自学) System.out.println("round:" + Math.round(12.34f)); System.out.println("round:" + Math.round(12.56f)); System.out.println("--------------"); //public static double sqrt(double a):正平方根 System.out.println("sqrt:"+Math.sqrt(4)); } }
运行结果:
PI:3.141592653589793
E:2.718281828459045
--------------
abs:10
abs:10
--------------
ceil:13.0
ceil:13.0
--------------
floor:12.0
floor:12.0
--------------
max:23
max:23
max:78
--------------
pow:8.0
--------------
random:0.39060160152994794
random:75
--------------
round:12
round:13
--------------
sqrt:2.0
Math.random()
package cn.itcast_02; import java.util.Scanner; /* * 需求:请设计一个方法,可以实现获取任意范围内的随机数。 * * 分析: * A:键盘录入两个数据。 * int strat; * int end; * B:想办法获取在start到end之间的随机数 * 我写一个功能实现这个效果,得到一个随机数。(int) * C:输出这个随机数 */ public class MathDemo { @SuppressWarnings("resource") public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入开始数:"); int start = sc.nextInt(); System.out.println("请输入结束数:"); int end = sc.nextInt(); for (int x = 0; x < 100; x++) { // 调用功能 int num = getRandom(start, end); // 输出结果 System.out.println(num); } } /* * 写一个功能 两个明确: 返回值类型:int 参数列表:int start,int end */ public static int getRandom(int start, int end) { int number = (int) (Math.random() * (end - start + 1)) + start; return number; } }
运行结果:
请输入开始数:
100
请输入结束数:
1000
394
478
224
432
917
443
715
830
123
735
510
581
134
508
318
156
365
223
553
954
401
514
732
766
812
358
118
907
113
923
182
123
111
728
217
235
444
963
754
426
889
885
650
475
673
783
906
324
414
792
695
468
406
524
346
701
220
350
505
866
186
925
986
147
608
487
957
964
369
373
468
982
291
372
867
280
110
680
268
110
895
897
586
445
387
728
114
427
974
452
497
444
765
603
243
381
436
757
316
137
Random类
package cn.itcast_01; import java.util.Random; /* * Random:产生随机数的类 * * 构造方法: * public Random():没有给种子,用的是默认种子,是当前时间的毫秒值 * public Random(long seed):给出指定的种子 * * 给定种子后,每次得到的随机数是相同的。 * * 成员方法: * public int nextInt():返回的是int范围内的随机数 * public int nextInt(int n):返回的是[0,n)范围的内随机数 */ public class RandomDemo { public static void main(String[] args) { // 创建对象 // Random r = new Random(); Random r = new Random(1111); for (int x = 0; x < 10; x++) { // int num = r.nextInt(); int num = r.nextInt(100) + 1; System.out.println(num); } } }
System类
系统类,提供了一些有用的字段和方法
运行垃圾回收器
package cn.itcast_01; public class Person { private String name; private int age; public Person() { super(); } public Person(String name, int age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Person [name=" + name + ", age=" + age + "]"; } @Override protected void finalize() throws Throwable { System.out.println("当前的对象被回收了" + this); super.finalize(); } }
package cn.itcast_01; /* * System类包含一些有用的类字段和方法。它不能被实例化。 * * 方法: * public static void gc():运行垃圾回收器。 * public static void exit(int status) * public static long currentTimeMillis() * public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length) */ public class SystemDemo { public static void main(String[] args) { Person p = new Person("赵雅芝", 60); System.out.println(p); p = null; // 让p不再指定堆内存 System.gc(); } }
退出jvm,获取当前时间的毫秒值
package cn.itcast_02; /* * System类包含一些有用的类字段和方法。它不能被实例化。 * * 方法: * public static void gc():运行垃圾回收器。 * public static void exit(int status):终止当前正在运行的 Java 虚拟机。参数用作状态码;根据惯例,非 0 的状态码表示异常终止。 * public static long currentTimeMillis():返回以毫秒为单位的当前时间 * public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length) */ public class SystemDemo { public static void main(String[] args) { // System.out.println("我们喜欢林青霞(东方不败)"); // System.exit(0); // System.out.println("我们也喜欢赵雅芝(白娘子)"); // System.out.println(System.currentTimeMillis()); // 单独得到这样的实际目前对我们来说意义不大 // 那么,它到底有什么作用呢? // 要求:请大家给我统计这段程序的运行时间 long start = System.currentTimeMillis(); for (int x = 0; x < 100000; x++) { System.out.println("hello" + x); } long end = System.currentTimeMillis(); System.out.println("共耗时:" + (end - start) + "毫秒"); } }
数组复制
package cn.itcast_03; import java.util.Arrays; /* * System类包含一些有用的类字段和方法。它不能被实例化。 * * 方法: * public static void gc():运行垃圾回收器。 * public static void exit(int status):终止当前正在运行的 Java 虚拟机。参数用作状态码;根据惯例,非 0 的状态码表示异常终止。 * public static long currentTimeMillis():返回以毫秒为单位的当前时间 * public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length) * 从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。 */ public class SystemDemo { public static void main(String[] args) { // 定义数组 int[] arr = { 11, 22, 33, 44, 55 }; int[] arr2 = { 6, 7, 8, 9, 10 }; // 请大家看这个代码的意思 System.arraycopy(arr, 2, arr2, 1, 2); System.out.println(Arrays.toString(arr)); System.out.println(Arrays.toString(arr2)); } }
运行结果:
[11, 22, 33, 44, 55]
[6, 33, 44, 9, 10]
更多java相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。