1,BigInteger与BigDecimal:
这两个类可以进行任意长度、任意精度的数值运算;
BigInteger——大整数,数值运算;
BigDecimal——大浮点数,数值运算;
数值运算用的是它们自己的方法,例如:add()和mutiply()。
基本类型数值转换为大数值:BigInteger.valueOf(基本类型数值);
代码:
public static void main(String[] args) {
int num1 = 20;
BigInteger bigInteger1 = BigInteger.valueOf(num1);
BigInteger bigInteger2 = BigInteger.valueOf(30);
//相加:
BigInteger bigInteger3 = bigInteger1.add(bigInteger2);
System.out.println("bigInteger3 = " + bigInteger3);
//-------------------
float num2 = 35.7f;
BigDecimal bigDecimal1 = BigDecimal.valueOf(num2);
BigDecimal bigDecimal2 = BigDecimal.valueOf(20.4f);
//相减:
BigDecimal bigDecimal3 = bigDecimal1.subtract(bigDecimal2);
System.out.println("bigDecimal3 = " + bigDecimal3);
}
结果:
bigInteger3 = 50
bigDecimal3 = 15.300001144409177
2,float和double的区别:
2.1:double是双精度,float是单精度;
2.2:默认的小数都是double类型,想写成float需要在后边跟一个f;例如:float a=1.6f;
3,数组-新建:
String[] arr4 = new String[10]; //此刻会创建一个包含10个字符串的数组,此时每个字符串的初始值为null.
4,数组拷贝:
//数组拷贝:
int[] arr5 = new int[]{1, 3, 5, 2, 9, 6, 7};
int[] arr6 = {3, 6, 8, 0, 2, 1, 4, 8}; //简写形式
int[] arr5Copy = Arrays.copyOf(arr5, arr5.length);
System.out.println("arr5Copy = " + Arrays.toString(arr5Copy));
int[] arr5CopyRange = Arrays.copyOfRange(arr5, 1, 3);
System.out.println("arr5CopyRange = " + Arrays.toString(arr5CopyRange));
//控制台输出:
arr5Copy = [1, 3, 5, 2, 9, 6, 7]
arr5CopyRange = [3, 5]
数组拷贝中,将一个数组变量拷贝给另一个数组变量,此时两个变量指向的是内存中的同一个数组;
Arrays.copyOf()这个方法通常是用来加长原来数组的长度,这样用的;例如:
arr5 = Arrays.copyOf(arr5, arr5.length * 2);
System.out.println("加长为原来2倍之后的arr5 = " + Arrays.toString(arr5));
控制台:
加长为原来2倍之后的arr5 = [1, 3, 5, 2, 9, 6, 7, 0, 0, 0, 0, 0, 0, 0]
Arrays.copyOf():如果拓长之后的数组的长度大于原来的数组,则后边的元素为默认初始值,例如0、false、null等;如果拓长之后的数组的长度小于原来的数组,则只拷贝原来数组最前边的元素。
5,数组排序:
通常使用Arrays.sort()方法,该方法的原理是使用了优化的快速排序算法。
6,Math.random()方法:
该方法将返回一个0~1之间(含0不含1)的一个随机浮点数;
用n乘以这个浮点数,就可以得到一个0~(n-1)之间的一个随机数。
double random = Math.random();
System.out.println("随机数random,0~1之间的一个浮点数 = " + random);
int randomInt1=(int)(Math.random() * 10);
int randomInt2=(int)(Math.random() * 100);
System.out.println("随机数randomInt1,0~10之间的一个数 = " + randomInt1);
System.out.println("随机数randomInt2,0~100之间的一个数 = " + randomInt2);
控制台:
随机数random,0~1之间的一个浮点数 = 0.3861905482236927
随机数randomInt1,0~10之间的一个数 = 1
随机数randomInt2,0~100之间的一个数 = 50
7, Arrays.binarySearch(int[] a, int fromIndex, int toIndex, int key),二分查找,还可以指定数组的某一块区间;
int index = Arrays.binarySearch(arr5, 3);
System.out.println("数组arr5中,二分查找,元素3的下标为 = " + index);
int index2 = Arrays.binarySearch(arr5, 1, 6, 3);
System.out.println("数组arr5的部分区间内,二分查找,元素3的下标为 = " + index2);
数组arr5中,二分查找,元素3的下标为 = 3
数组arr5的部分区间内,二分查找,元素3的下标为 = 3
8,Arrays.equals(int[] a, int[] a2)方法,比较两个数组是否相等;
如果两个数组大小长度相等,并且下标对应的元素也都对应相等,则返回true.