一.Math
API帮助文档里面的Math
在API帮助文档里面:
Math一些常用的方法:
一:abs();
控制台结果
abs();存在的bug
我们知道int类型可以储存数据的范围是: -2147483648-----2147483647;
如果要处理数据的过大时,我们可以使用absExact();
我们可以发现java虚拟机直接报错。(在JDK15以上才有这个方法)。
二:ceil(); floor();和round();
三:max( , );和min( , );
四:pow( , );
五:random();
总结:
1.Math是一个帮助我们进行数学运算的工具类
2.里面的方法都是静态的
3.需要时自行查阅,没有必要死记硬背。
两个小练习:
一.判断一个数是否为质数:
原来的方法:
直接暴力枚举,但是会随着数量的增加而加大运算量。
因为一个整数的两个因子一定满足
所以我们进行改进,可以大大提高运行效率。
二:水仙花数
水仙花数一定是三位数。
每一位的三次方相加等于其本身例如153=1^3+5^3+3^3
打印出所有的水仙花数:
二.System
System也是一个工具类,提供了与系统有关的方法。
System的常用方法:
一:exit(int status);
方法的形参表示状态码:
0:虚拟机正常停止
非0:虚拟机非正常停止
二:currentTimeMillis();
返回long类型,代表着当前日期和时间原点的差值(单位是毫秒)。
计算机存在时间原点 1970年1月1日 00.00.00。
由于我们是东八区所以实际上是1970年1月1日 00.08.00
我们可以用这个方法来得到一段代码运行需要的时间
可以看到暴力枚举使用了13毫秒。
我们使用改进之后的方法只需要4毫秒
三:arraycopy();
此方法可以进行数组的拷贝
arraycopy(数组源,数组源起始索引,目的数组,目的数组起始索引,要拷贝的长度);
注意:
1.如果数据源数组和目的地数组都是基本数据类型,需要让两者类型保持一致。
2.注意数组越界问题。
三:Runtime
表示当前虚拟机的运行环境。
不是静态的。
Runtime的常用方法
一:getRuntime();
因为一台电脑只有一个环境,所以都只有一个对象。
我们发现r1和r2的地址值相同。也就是说两次获取的是同一个对象
二:exit();
exit();和System中的exit一样,都可以结束虚拟机的运行
其实System的底层源码就是
Runtime.getRuntime().exit();
三:availableProcessors();
我这里就是32线程。
三:maxMemory();
Java虚拟机可以从系统中获得的总内存大小。(单位byte)
四:totalMemory();和freeMemory();
totalMemory(); Java虚拟机已经在内存中获得的内存大小(单位byte)
freeMemory(); Java虚拟机剩余可获取内存的大小(单位byte)
五.exec();
可以运行cmd命令
注意
直接书写会报错,我们点击波浪线ALT+ENTER一起按下去
选第一个,如果没有第一个,就选第二个。