Java15常用类5:系统相关的类、和数学相关的类(Math类)、

6.系统相关的类

6.1 System

java.lang.System

6.1.1 属性

修饰符和类型 字段和说明
static PrintStream err “标准”错误输出流(显示器)。
static InputStream in “标准”输入流(键盘输入)。
static PrintStream out “标准”输出流(显示器)。

6.1.2 成员方法

  • native long currentTimeMillis(),作用是:返回当前时间和GMT(格林威治标准时间:1970年 1月 1日 0时 0分 0秒)即UTC 之间的差值(以毫秒为单位)。
  • void exit(int status),作用是:退出程序。status= 0,正常退出;非0,异常退出。使用该方法可以图形界面编程中实现程序退出的功能。
  • void gc(),作用是:请求系统进行垃圾回收。至于系统是否立刻回收,取决于系统中垃圾回收算法的实现以及系统的执行是的情况。
  • String getProperty(String key),作用是:获取系统中属性名为 key的属性对应的值。系统常见属性名以及属性的作用如下所示:
属性名 属性说明
java.version Java运行时环境版本
java.home Java安装目录
os.name 操作系统的名称
os.version 操作系统的版本
user.name 用户的帐户名称
user.home 用户的主目录
user.dir 用户的当前工作目录
	/**
     * 1. getProperty()方法
     * 获取系统中属性名为 key的属性对应的值
     */
    @Test
    public void test1(){
        String javaVersion = System.getProperty("java.version");
        System.out.println("java.version: "+javaVersion);

        String javaHome = System.getProperty("java.home");
        System.out.println("java.home: "+javaHome);

        String osName = System.getProperty("os.name");
        System.out.println("os.name: "+osName);

        String osVersion = System.getProperty("os.version");
        System.out.println("os.version: "+osVersion);

        String userName = System.getProperty("user.name");
        System.out.println("user.name: "+userName);

        String userHome = System.getProperty("user.home");
        System.out.println("user.home: "+userHome);

        String dir = System.getProperty("dir");
        System.out.println("用户的当前工作目录dir: "+dir);
    }

6.2 Runtime类

java.lang.Runtime

  1. 每一个 Java应用程序都有一个 Runtime类实例,使应用程序能够与其运行的环境相连接。
  2. 它对应着 Java进程的内存使用的运行时环境,是单例的

6.2.1 Runtime方法:

public static Runtime getRuntime():返回与当前应用程序相关的运行时对象。应用程序不能创建自己的 Runtime类实例。
public native long freeMemory(); :返回 Java虚拟机中的空闲内存量。调用 gc()方法可能导致 freeMemory返回值的增加。
public native long totalMemory(); :返回 Java虚拟机中初始化时的内存总量。此方法的返回值可能随时间的推移而变化,这取决于主机环境。默认为电脑物理内存的 1/64。
public native long maxMemory();:返回 Java虚拟机中最大能使用的内存总量。默认为电脑内存的 1/4.

6.2.2 代码示例

    /**
     * 2.Runtime类:获取系统内存的方法
     */
    @Test
    public void test2() {
        Runtime runtime = Runtime.getRuntime();
        //返回 Java虚拟机中`初始化时的内存总量`
        long initialMemory = runtime.totalMemory();
        //返回 Java虚拟机中`最大能使用的内存总量`
        long maxMemory = runtime.maxMemory();
        String str = "";

        //模拟占用内存
        for (int i = 0; i < 10_000; i++) {
            str += i;
        }
        long freeMemory = runtime.freeMemory();
        System.out.println("初始化时总内存:" + initialMemory / 1024 / 1024 * 64 + "MB");
        System.out.println("最大可用总内存:" + maxMemory / 1024 / 1024 * 4 + "MB");
        System.out.println("空闲内存:" + freeMemory / 1024 / 1024 + "MB");
        System.out.println("已用内存:" + (initialMemory - freeMemory) / 1024 / 1024 + "MB");
    }

7. 和数学相关的类

7.1 java.long.Math类

  • 是常见的数学运算类
  • 常用:
  1. Math.runtime();//随机数
  2. Math.PI();常量π

**Math类常用方法: **

package com.lCommonClasses.cMathClass;

public class Math1 {
    public static void main(String[] args) {
        System.out.println(Math.max(2,2.8));//获得最大值2.8
        System.out.println(Math.min(9.6,10));//获得最小值:9.6
        System.out.println(Math.abs(-20));//获得绝对值:20
        System.out.println(Math.random());//生成`0~1`的随机数

        //返回大于等于参数的最小整数。ceil天花板
        System.out.println(Math.ceil(3.3));//4.0
        //返回小于等于参数的最大整数。floor地板
        System.out.println(Math.floor(3.3));//3.0
        
        /**返回最接近参数的 long(相当于四舍五入法)*/
        System.out.println(Math.round(5.5));//6
        System.out.println(Math.round(5.4));//5
        //技巧:floor(x + 0.5)
        System.out.println(Math.round(-12.3));//-12
        System.out.println(Math.round(-12.6));//-13
        System.out.println(Math.round(-12.5));//-12
        
        //返回的是 2的3次方
        System.out.println(Math.pow(2,3));//8.0
        //返回 4的平方根
        System.out.println(Math.sqrt(4));//2.0
        //返回 圆周率PI
        System.out.println(Math.PI);
    }
}

此外还有,三角函数:acos, asin, atan, cos, sin, tan

7.2 java.math包

7.2.1 BigInteger

  • Integer作为 int的包装类,能存储的最大整型值为231-1,Long类也是有限的,最大为263-1。如果要表示再大的整数,不管是基本数据类型 还是他们的包装类都无能为力,更不用说进行运算了
  • java.math包的 BigInteger可以表示不可变的任意精度的整数。BigInteger提供所有 Java的基本整数操作符的对应物,并提供 java.lang.Math的所有相关方法。另外,BigInteger还提供以下运算:模运算、GCD计算、质数测试、素数生成、位操作以及一些其它操作。
  • 构造器:
    BigInteger(String val):根据字符串构建 BigInteger对象
  • 方法:
    public BigInteger abs():返回此 BigInteger 的绝对值的 BigInteger
    BigInteger add(BigInteger val):返回其值为 (this + val) 的 BigInteger
    BigInteger subtract(BigInteger val):返回其值为 (this - val) 的 BigInteger
    BigInteger multiply(BigInteger val):返回其值为 (this * val) 的 BigInteger
    BigInteger divide(BigInteger val):返回其值为 (this / val) 的 BigInteger
    BigInteger remainder(BigInteger val):返回其值为 (this % val) 的 BigInteger
    BigInteger[] divideAndRemainder(BigInteger val):返回包含 (this / val) 后跟 (this % val) 的两个 BigInteger的数组
    BigInteger pow(int exponent):返回其值为 (this^exponent) 的 BigInteger
package com.lCommonClasses.cMathClass;
import org.junit.Test;
import java.math.BigInteger;

/**
 * BigInteger 任意精度的整数
 */
public class BigInteger1 {
    @Test
    public void test1() {
        BigInteger b1 = new BigInteger("12345678912345678912345678");
        BigInteger b2 = new BigInteger("546791234567891234567891234567");
        //System.out.println("和:"+(b1+b2));//错

        System.out.println("和:"+b1.add(b2));
        System.out.println("减:"+b1.subtract(b2));
        System.out.println("乘:"+b1.multiply(b2));
        System.out.println("除:"+b1.divide(b2));
        System.out.println("余:"+b1.remainder(b2));
    }
}

7.2.2 BigDecimal

  • 一般的 Float类和 Double类可以用来做科学计算 或工程计算,但在商业计算中要求计算精度比较高,故用到 java.math.BigDecimal类。
  • BigDecimal类支持不可变的、任意精度的有符号十进制定点数
  • 构造器
    public BigDecimal(double val)
    public BigDecimal(String val)
  • 常用方法:
  • public BigDecimal add(BigDecimal augend)
  • public BigDecimal subtract(BigDecimal subtrahend)
  • public BigDecimal multiply(BigDecimal multiplicand)
  • public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode): divisor,除数;scale,指明保留几位小数;roundingMode,指明舍入方式(ROUND_UP, 向上 +1;ROUND_DOWN, 直接舍去;ROUNDOM_HALF_UP, 四舍五入)
package com.lCommonClasses.cMathClass;
import org.junit.Test;
import java.math.BigDecimal;

/**
 * BigDecimal 任意精度的浮点数
 */
public class BigDecimal1 {
    @Test
    public void test1(){
        BigDecimal bi = new BigDecimal("123456789.123");
        BigDecimal bd = new BigDecimal("123456789.123");
        BigDecimal bd2 = new BigDecimal("11");
        System.out.println(bi);
        
        /*报ArithmeticException:因为BigDecimal的divide方法出现了无限循环小数
        System.out.println(bd.divide(bd2));
        解决方法 如下,两种方法:*/
        System.out.println(bd.divide(bd2,BigDecimal.ROUND_HALF_UP));
        //divisor,除数;scale,指明保留几位小数;roundingMode,指明舍入方式
        System.out.println(bd.divide(bd2,15,BigDecimal.ROUND_DOWN));
    }
}

7.2.3. java.util.Random

  1. Rundom类 —— 用于生成随机数
  2. 方法
  • boolean nextBoolean():返回下一个伪随机数,它是取自此随机数生成器序列的 均匀分布的 boolean值
  • void nextBoolean(byte[] bytes):生成随机字节并将其置于用户提供的 byte数组中。
  • double nextDouble():返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 ~ 1.0 之间均匀分布的 double值。
  • float nextFloat():返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 ~ 1.0 之间均匀分布的 float值。
  • double nextGaussian():返回下一个伪随机数,它是取自此随机数生成器序列的、呈高斯(“正太”)分布的 double值,其平均值是0.0,标准差是1.0。
  • int nextInt():返回下一个伪随机数,它是随机数生成器的序列中均匀分布的 int值。
  • int nextInt(int n):返回下一个伪随机数,它是随机数生成器序列的、在 0(包含)和指定值 n(不包含) 之间均匀分布的 int值。(用得较多)
  • long nextLong:返回下一个伪随机数,它是随机数生成器的序列中均匀分布的 long值。
package com.lCommonClasses.cMathClass;

import java.util.Random;
import java.util.UUID;

public class Random1 {
    public static void main(String[] args) {
        /**1.Random*/
        Random random = new Random();
        int captcha = random.nextInt(10000);
        float randomNumbers = random.nextFloat();
        System.out.println("四位验证码是:"+captcha);
        System.out.println("随机数是:"+randomNumbers);

        /**2.UUID:是指通用唯一识别码
         * (Universally Unique Identifier)*/
        String id= UUID.randomUUID().toString();//生成随机ID
        System.out.println(id);
    }
}

你可能感兴趣的:(Java,开发语言,java)