目录
常用工具类介绍
数学工具类
数组工具类
常用工具类介绍
工具类就是专门为一些特定场景编写的,便于我们去使用的类。工具类一般都会内置大量的静态方法,我们可以通过类名直接使用。
数学工具类
java提供的运算符实际上只能进行一些在小学数学中出现的运算,但是如果我们想要进行乘方、三角函数之类的高级运算,就没有对应的运算符能够做到,而此时我们就可以使用数学工具类来完成。
public static void main(String[] args) {Math.pow(2,3); //2的三次方Math.abs(-1); //求绝对值Math.max(11,13); //最大值Math.sqrt(9); //算术平方根Math.sin(Math.PI/2); //求π/2的正弦值Math.asin(1); //三角函数的反函数,这里是arcsin1的值Math.ceil(4.5); //向上取整Math.floor(4.5); //向下取整}
计算sinπ得到的1.2246467991473532E-16是精度导致的,这里的E是科学计数法的10,这个数是非常接近于0的。
快速计算对数:
public static void main(String[] args) {System.out.println(Math.log(Math.E)); //以e为底的对数函数,其实就是ln,我们可以直接使用Math中定义好的eMath.log10(100); // 10为底的对数函数//利用换底公式,可以有任何我们想求的对数函数double a=Math.log(4)/Math.log(2); //这里是求以2为底4的对数,log(2)4=ln4/ln2}
随机数的生成:Random类
import java.util.Random;public class Main {public static void main(String[] args) {Random random=new Random(); //创建Random对象System.out.println(random.nextInt(100)); //nextInt方法可以创建指定0-x之内的随机数}
}
数组工具类
数组工具类Arrays
用于便捷操作数组,比如打印数组可以直接通过toString方法转换字符串:
public static void main(String[] args) {int[] arr=new int[]{1,6,3,5,2,0};System.out.println(Arrays.toString(arr));}
//输出{1,6,3,5,2,0}
排序:
public static void main(String[] args) {int[] arr=new int[]{1,6,3,5,2,0};Arrays.sort(arr); //将所有的元素从小到大顺序排放System.out.println(Arrays.toString(arr));}
//输出[0, 1, 2, 3, 5, 6]
快速进行填充:
public static void main(String[] args) {int[] arr=new int[10];Arrays.fill(arr,66);System.out.println(Arrays.toString(arr));}
//输出[66, 66, 66, 66, 66, 66, 66, 66, 66, 66]
快速对一个数组进行拷贝:
public static void main(String[] args) {int[] arr=new int[]{1,2,3,4,5};int[] target=Arrays.copyOf(arr,5);System.out.println(Arrays.toString(target)); //拷贝数组的全部内容,并生成一个新的数组对象System.out.println(arr==target);}
//输出[1, 2, 3, 4, 5]
false
int[] arr=new int[]{1,2,3,4,5};int[] target=Arrays.copyOfRange(arr,3,5); //拷贝某个范围的内容,包前不包后System.out.println(Arrays.toString(target));
//输出[4, 5]
也可以将一个数组中的内容拷贝到其他数组中:
public static void main(String[] args) {int[] arr=new int[]{1,2,3,4,5};int[] target=new int[10];System.arraycopy(arr,0,target,2,5); //使用System.arraycopy进行搬运System.out.println(Arrays.toString(target));}
//输出[0, 0, 1, 2, 3, 4, 5, 0, 0, 0]
对一个有序的数组(从小到大排列)我们可以使用二分搜索快速找到对应元素在哪个位置:
public static void main(String[] args) {int[] arr=new int[]{1,2,3,4,5};System.out.println(Arrays.binarySearch(arr,5));}
//输出4
多维数组:
因为现在数组里每个元素就是一个数组,所以说toString会出现些问题。Arrays也支持对多维数组进行处理。
deepToString方法对多维数组进行打印
同样的,因为数组本身没有重写equals方法,所以说无法判断两个不同的数组对象中每一个元素是否相同,Arrays也为一维数组和多维数组提供了相等判断的方法:
public static void main(String[] args) {int[][] a=new int[][]{{2,1,3},{4,6,9}};int[][] b=new int[][]{{2,1,3},{4,6,9}};System.out.println(Arrays.equals(a,b)); //equals仅适用于一维数组System.out.println(Arrays.deepEquals(a,b)); //对于多维数组使用deepEquals进行深层次判断}
//输出false
true