System类、BigDecimal类、BigInteger类

System类

System类包含几个有用的类字段和方法。 它不能被实例化。

字段

public static final InputStream in
“标准”输入流。 该流已经打开,准备提供输入数据。 通常,该流对应于键盘输入或由主机环境或用户指定的另一个输入源。
public static final PrintStream out
“标准”输出流。 此流已经打开并准备好接受输出数据。 通常,此流对应于显示输出或由主机环境或用户指定的另一个输出目标。
public static final PrintStream err
“标准”错误输出流。 此流已经打开并准备好接受输出数据。

ublic class Demo {
    public static void main(String[] args) {
    	//以下内容相当于Scanner input=new Scanner(System.in);
        InputStream in = System.in;
        Scanner input=new Scanner(in);
               
        System.out.println("data")
        //以下内容相当于System.outprintln("data");
        PrintStream out = System.out;
        out.println("data");
        
        //输出的数据颜色变为红色,用于提示错误
        System.err.println("data");
    }
}
方法

该类中还有其他的方法,如果需要可以查帮助文档,以下只是举例。
public static long currentTimeMillis()
返回当前时间(以毫秒为单位)。
public static void gc()
调用gc方法表明,Java虚拟机花费了回收未使用对象的努力,以使其当前占用的内存可以快速重用。
public static void exit(int status)
终止当前运行的Java虚拟机。 该参数作为状态代码; 按照惯例,非零状态码表示异常终止。

public class Demo {
    public static void main(String[] args) {
    	//使用这个方法可以计算一个程序运行的时间
        //从1970 01-01 00:00:00到现在时间的间隔的毫秒值
        long start=System.currentTimeMillis();
        for (int i = 0; i < 1000; i++) {
            System.out.println(i);
        }
        long end=System.currentTimeMillis();
        System.out.println((end-start)+"ms");
         
        /*
        调用System.gc()实际上等效于调用:
        Runtime.getRuntime().gc()
        */
        System.gc();
        
        //0:正常退出 1:强制退出
        //比如当用户关闭一个软件时,就可以调用该方法
        System.exit(0);
    }
}

BigDecimal类

不变的,任意精度的带符号的十进制数字。
由于在运算的时候,float类型和double很容易丢失精度,所以,为了能精确的表示、计算浮点数,Java提供了BigDecimal
此类常用于高精度的计算。

构造方法

public BigDecimal(String val)

BigDecimal num1=new BigDecimal("3.14444444444444");
方法

public BigDecimal add(BigDecimal augend)
返回 BigDecimal ,其值是 (this + augend) 。
public BigDecimal subtract(BigDecimal subtrahend)
返回 BigDecimal ,其值是 (this - subtrahend)。
public BigDecimal multiply(BigDecimal multiplicand)
返回 BigDecimal ,其值是 (this × multiplicand)。
public BigDecimal divide(BigDecimal divisor)
返回一个BigDecimal ,其值是(this / divisor) 。
public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode)
返回一个BigDecimal ,其值为(this / divisor) ,其比例为指定。 如果必须执行舍入以生成指定刻度的结果,则应用指定的舍入模式。
divisor - 这个 BigDecimal将被划分的值。
scale - 要返回的 BigDecimal 。
roundingMode - 舍入模式申请。

public class Demo {
    public static void main(String[] args) {
        BigDecimal num1=new BigDecimal("3.14444444444444");
        BigDecimal num2=new BigDecimal("5.888888888888888");
        System.out.println(num1.add(num2));
        System.out.println(num1.subtract(num2));
        System.out.println(num1.multiply(num2));
    }
}
/*
运行结果:
9.033333333333328
-2.744444444444448
18.51728395061725498271604938272
*/
public class Demo {
    public static void main(String[] args) {
        BigDecimal num1=new BigDecimal("10");
        BigDecimal num2=new BigDecimal("2");
        BigDecimal num3=new BigDecimal("3");
        System.out.println(num1.divide(num2));
        //对于不能整除的数,我们要传入保留的位数以及舍入模式
        /*
        如果不传入这些,即:
        System.out.println(num1.divide(num3));
        就会报错:ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
        */
        System.out.println(num1.divide(num3,30,BigDecimal.ROUND_CEILING));
    }
}

BigInteger类

不可变的任意精度的整数。
在Java中为了计算超过long范围的数,提供了BigInteger类
因为此类于BigDecimal类中的方法类似再次不过多赘述

public class Demo {
    public static void main(String[] args) {
        long maxValue=Long.MAX_VALUE;
        //注意long的范围最大值加1会变成一个负数,因为会丢弃多余字节
        //所以在Java中存在一个数加1小于该数本身的情况。
        System.out.println(maxValue+1);
        BigInteger a=new BigInteger(Long.MAX_VALUE+"");
        BigInteger b=new BigInteger(Long.MAX_VALUE+"");
        BigInteger multiply = a.multiply(b);
        System.out.println(multiply);
        BigInteger c = new BigInteger(1 + "");
        BigInteger add = a.add(c);
        System.out.println(add);
    }
}
/*
运行结果:
-9223372036854775808
85070591730234615847396907784232501249
9223372036854775808
*/
System类、BigDecimal类、BigInteger类System类、BigDecimal类、BigInteger类 weixin_45919908 发布了25 篇原创文章 · 获赞 1 · 访问量 314 私信 关注
上一篇:求大数


下一篇:java 大整数