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
*/
weixin_45919908
发布了25 篇原创文章 · 获赞 1 · 访问量 314
私信
关注