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程序设计有所帮助。

(0)

相关推荐

  • Java System类用法实战案例

    本文实例讲述了Java System类用法.分享给大家供大家参考,具体如下: 一 使用System类访问系统属性 1 代码 import java.util.Map; public class SystemClassDemo { public static void main(String[] args) { Map<String, String> env = System.getenv(); // 获得系统的环境变量 for (String name : env.keySet()) { Sy

  • java基础(System.err和System.out)详解

    今天有位同事在使用System.err和System.out遇上了一些小问题. 看了些资料总结下: 1.JDK文档对两者的解释: out:"标准"输出流.此流已打开并准备接受输出数据.通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标. err:"标准"错误输出流.此流已打开并准备接受输出数据.通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标.按照惯例,此输出流用于显示错误消息,或者显示那些即使用户输出流(变量 out 的值)已经重

  • python中print()函数的“,”与java中System.out.print()函数中的“+”功能详解

    python中的print()函数和java中的System.out.print()函数都有着打印字符串的功能. python中: print("hello,world!") 输出结果为:hello,world! java中: System.out.print("hello,world!"); 输出结果为:hello,world! 我们可以看到,这两个函数的用法是一样的 print()函数还有这种用法: print("1+1=",1+1) 输出结

  • 重新认识Java的System.in

    重新认识 Java 的 System.in 以前也写过不少命令行的程序,处理文件时总需要通过参数指定路径,直到今天看资料时发现了一种我自己从来没用过的方式.这种方式让我重新认识了System.in. 下面是一个简单的Cat 命令的例子,这里提供了-n参数用于配置是否显示行号. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.A

  • Java System类详解_动力节点Java学院整理

    System类是jdk提供的一个工具类,有final修饰,不可继承,由名字可以看出来,其中的操作多数和系统相关.其功能主要如下: • 标准输入输出,如out.in.err • 外部定义的属性和环境变量的访问,如getenv()/setenv()和getProperties()/setProperties() • 加载文件和类库的方法,如load()和loadLibrary(). • 一个快速拷贝数组的方法:arraycopy() • 一些jvm操作,如gc().runFinalization()

  • java 中 System.out.println()和System.out.write()的区别

     java 中 System.out.println()和System.out.write()的区别. 这两个函数一个是System.out.write()输出字符流,System.out.println()是输出字节流,很简单.看下面这个程序就明白了. //import java.util.*; public class Test { public static void main(String[] args){ // Scanner in = new Scanner(System.in);

  • Java的System.getProperty()方法获取大全

    本文实例汇总了Java的System.getProperty()方法获取信息的用法.分享给大家供大家参考.具体如下: 复制代码 代码如下: System.out.println("java版本号:" + System.getProperty("java.version")); // java版本号 System.out.println("Java提供商名称:" + System.getProperty("java.vendor"

  • javaSystem.out.println()输出byte[]、char[]异常的问题详析

    前言 今天 突然有人问我他写的byte[]和char[],在用System.out.println()输出的时候所得的值有问题? 细思恐惧啊 我之前怎么没发现................ 废话不多说 代码如下 /** * @Author: * @Date: 2019/1/9/00099:23 * @Version 1.0 */ public class arrayTest { public static void main(String[] args) { //创建一个byte数组 byte

  • 十分钟速懂java知识点 System类

    上次面试中遇到的一个问题,问到System.out.println()中的out是不是内部类,当时就给问蒙了,直观感觉out应该是System类的一个属性,跟内部类有什么关系?而且之前整理IO部分的时候记得有个PrintStream的类用于标准输出的,但是从没看过System的源码,也不敢随便再说了.后来看了下源码,发现的确是PrintStream,可能当时想问的是内部类的用法吧,不过归根结底自己水平差得多,还是要认真学习. 言归正传,System类是jdk提供的一个工具类,有final修饰,不

  • Java获取当前系统事件System.currentTimeMillis()方法

    System.currentTimeMillis()产生一个当前的毫秒,这个毫秒其实就是自1970年1月1日0时起的毫秒数,Date()其实就是相当于Date(System.currentTimeMillis()),因为Date类还有构造Date(longdate),用来计算long秒与1970年1月1日之间的毫秒差. 得到了这个毫秒数,我们自己也可以算起现在的年月日周时,但是这不是我们去计算的,因为有Calendar.Calendar最终结出的结果就是年月日周时时区. System.curre

  • java system类使用方法示例 获取系统信息

    常用的方法: 复制代码 代码如下: long currentTimeMillis();  获取当前时间的毫秒值 void exit();终止当前正在运行的 Java 虚拟机. 复制代码 代码如下: public static void Method(){     long l = System.currentTimeMillis();     System.out.println(l); System.exit(); } 描述系统属性信息:Properties System.getPropert

随机推荐