Math 类
- Math 类是?
Math 是java中封装的一些数学方法。Math 不能被new 实例,构造方法为私有的。
类中方法都为静态的,使用时用类名加点方法名的方式调用
eg ; Math.random();
-
Math 中的常量
-
//e 最接近自然底数e的双精度值 public static final double E = 2.7182818284590452354; //圆周率 最接近圆周率的双精度值 public static final double PI = 3.14159265358979323846;
-
常用的生成随机数方法:
- Math.random() 方法 产生[0,1) 左闭右开的随机小数,返回值为double
- Math.random() 方法 本质上是调用Random类的 nextDouble() 方法
- 若产生一个 [a,b] 的随机数
- Math.random()*(b-a+1)+a
- eg : [2,99] (int)( Math.random*98+2)
- 若产生一个[a,b) 的随机数
- Math.random()*(b-a)+a
- eg:[1,100) (int)( Math.random*99+1)
- 若产生一个(a,b] 的随机数
- Math.random()*(b-a)+(a+1)
- eg:(1,100] (int)( Math.random*99+2)
- 若产生一个(a,b) 的随机数
- Math.random()*(b-a-1)+(a+1)
- eg:(1,100) (int)( Math.random*98+2)
-
Math.max(int a, int b) 返回较大的那个数,有多个重载版本,也可比较其他基本数据类型
-
Math.min(int a, int b) 返回较小的那个数,有多个重载版本,也可比较其他基本数据类型
-
//平方根 返回double类型 System.out.println(Math.sqrt(4)); //2.0 //幂运算 返回double类型 System.out.println(Math.pow(2,3)); //8.0
Random 类
-
Random 随机类 (伪随机)
-
两种构造方法
-
Random(); 创建一个新的随机数生成器
-
Random(long seed); 使用单个 long 种子创建一个新随机数生成器
如果用相同的种子创建两个Random 实例,则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列
- 伪随机: Random 生成的是随机序列,而且一旦随机种子被确定了,那么随机序列就确定了,不具有真正意义上的随机
-
-
Random 使用
```java
//指定使用相同的随机种子,生成的随机序列相同
Random r1 =new Random(100);
Random r2 =new Random(100);
for (int i = 0; i < 10; i++) {
System.out.println(r1.nextInt(50));
System.out.println(r2.nextInt(50));
}
//结果
/*
15
15
0
0
24
24
38
38
41
41
16
16
36
36
…
*/
//一般我们使用无参构造,它会对随机种子进行改变,根据当前时间变动毫秒值
Random random = new Random();
for (int i = 0; i < 10; i++) {
System.out.println(random.nextInt(100));
}
```
- nextInt(),无参数就生成随机生成器序列中的下一个伪随机序列
- nextInt(int bound), 有参数,表示范围 [0,bound)
-
静态导入
当使用一个类里面的静态方法或者静态变量时,每次都需要写类名。如果不想写类名,想直接写方法名或者变量名,则可以考虑使用静态导入
语法:import static 类名.*; //导入该类下的所有静态方法和常量
例如:import static Math.*; //导入Math下的所有方法和变量(包括常量),则代码中可以直接使用方面和变量名,而不需要前缀Math。
如:max(3,4);
- 找静态方法顺序
- 本类找
Runtime 类
Runtime类代表java程序的运行时环境,每个程序都有一个与之关联的Runtime实例,应用程序通过该对象与运行时环境相连。
应用程序不能自己创建Runtime对象,可以通过Runtime的静态方法getRuntime()获得Runtime对象。
import java.io.BufferedReader; import java.io.InputStreamReader; public class Test { public static void main(String[] args) throws Exception{ Runtime rt=Runtime.getRuntime(); //获取Runtime的实例 System.out.println(rt.freeMemory());//返回Java虚拟机中的可用内存量 System.out.println(rt.availableProcessors()); //返回可用于Java虚拟机的处理器数量 System.out.println(rt.totalMemory());//返回Java虚拟机中的内存总量。 System.out.println(rt.maxMemory()); //返回Java虚拟机将尝试使用的最大内存量。 } }
2、Runtime可以直接启动一条进程来运行操作系统的命令
import java.io.IOException; public class Test { public static void main(String[] args) throws IOException { Runtime rt=Runtime.getRuntime(); //打开记事本 rt.exec("notepad.exe"); } }
System 类
System类代表当前java程序的运行平台,程序不能自己创建System类的对象。
1、 System类提供了一些静态属性和方法,允许通过类名直接调用。
2、 System类提供了代表标准输入、标准输出、错误输出的类属性。
3、 System类提供了一些静态方法用于访问环境变量、系统属性的方法。
4、 System类还提供了加载文件和动态链接库的方法。
- 输入流 System.in
- 输出流 System.out
- 错误输出流 System.err 输出为红色的字体
System 常用方法
1.public static void exit(intstatus) 退出当前虚拟机
2.public static long currentTimeMillis() 获得当前系统的毫秒值(与1970 年 1 月 1 日午夜之间的时间差)
3.public static Properties getProperties() 获得当前的所有系统属性
4.public static String getProperty(String key) 获得指定键的系统属性
5.public static void setIn(InputStream in) 输入重定向
6.public static void setOut(PrintStream out) 输出重定向
7.publicstatic void setErr(PrintStream err) 错误重定向