第二章 常用API
01.System类
1.介绍
System的功能是静态的,都是直接用类名调用.
2.常见方法
常见方法如下 :
方法名 | 说明 |
---|---|
public staic void exit(int staus) | 终止当前运行的Java虚拟机,非零表示异常终止 |
public static long currentTimeMillis() | 返回当前系统时间的毫秒值形式 |
public static void arraycopy(数据源, 起始索引,目的数组,起始索引,拷贝个数) | 数组拷贝 |
02.BigDecimal类
1.介绍
用于解决浮点型运算精度失真的问题
2.创建对象的细节
为了防止精度丢失,禁止使用BigDecimal(double)方法将double对象转换为BigDecimal,建议使用BigDecimal的valueOf方法
public static BigDecimal valueOf(double val) //包装浮点数为BigDecimal对象
3.常见方法
方法名 | 说明 |
---|---|
public BigDecimal add(BigDecimal b) | 加法 |
public BigDecimal subtract(BigDecimal b) | 减法 |
public BigDecimal multiply(BigDecimal b) | 乘法 |
public BigDecimal devide(BigDecimal b) | 除法 |
public BigDecimal devide(另一个BigDecimal b对象,精确几位,舍入模式) | 除法 |
public class Test {
public static void main(String[] args) {
BigDecimal bd1 = BigDecimal.valueOf(10.0);
BigDecimal bd2 = BigDecimal.valueOf(3.0);
//加法
double result1 = bd1.add(bd2).doubleValue();
System.out.println(result1);
//减法
double result2 = bd1.subtract(bd2).doubleValue();
System.out.println(result2);
//乘法
double result3 = bd1.multiply(bd2).doubleValue();
System.out.println(result3);
//除法
BigDecimal result4 = bd1.divide(bd2, 2, RoundingMode.HALF_UP);//四舍五入法保留两位小数
System.out.println(result4);
BigDecimal result5 = bd1.divide(bd2, 2, RoundingMode.UP);//进一法保留两位小数
System.out.println(result5);
BigDecimal result6 = bd1.divide(bd2, 2, RoundingMode.DOWN);//去尾法保留两位小数
System.out.println(result6);
}
}
03.包装类
1.介绍:
将八种基本数据类型,包装成类,成为引用数据类型
好处 : 类中有方法,可以提供很多方便的操作
2.分类
基本类型 | 对应的包装类(位于java.lang包) |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
3.Interger类
创建对象的常见方法:
方法名 | 说明 |
---|---|
public static Integer valueOf(int i) | 返回表示指定的int值的Integer实例 |
public static Integer valueOf(String s) | 返回保存指定的String 值的Integer对象 |
4.自动装箱和拆箱
- 自动装箱:基本类型的数据和变量可以直接赋值给包装类型的变量。
- 自动拆箱:包装类型的变量可以直接赋值给基本数据类型的变量
Integer i = 4;
//自动装箱。Integer i = Integer.valueOf(4);
----------------------------------------------------------------
i = i + 5;
//等号右边:将i对象转成基本数值(自动拆箱) i.intValue() + 5;
//加法运算完成后,再次装箱,把基本数值转成对象。
5.面试题
看程序说结果
public class Test {
public static void main(String[] args) {
Integer i1 = 127;
Integer i2 = 127;
System.out.println(i1==i2);
System.out.println(i1.equals(i2));
System.out.println("----------------------");
Integer i3 = 129;
Integer i4 = 129;
System.out.println(i3==i4);
System.out.println(i3.equals(i4));
}
}
/*
Integer重写过equals方法,因此i1和i3调用equals方法分别和i2,i4比较时,结果为true
Integer i1 =127,Integer i2 = 127; Integer i3 = 129,Integer i4 = 129;这四句话会进行自动装箱
Integer在自动装箱时,会调用public static Integer valueOf (int i)方法来将接收到的数据包装成Integer类
valueOf方法在接收到数据之后,会先判断这个数据是不是-128到127之间,如果在这个区间内,就会将底层缓存数组中对应索引取出(i+128)
如果不是这个区间内的值,就重新开辟一个新的空间存储.
目的是为了节约内存,因为-128到127这个范围内的数使用较为频繁
*/
6.基本类型和字符串之间的转换
方法名 | 说明 |
---|---|
public static byte parseByte(String s) | 将字符串参数转换为对应的byte基本类型。 |
public static short parseInt(String s) | 将字符串参数转换为对应的short基本类型。 |
public static short parseShort(String s) | 将字符串参数转换为对应的int基本类型。 |
public static short parseLong(String s) | 将字符串参数转换为对应的long基本类型。 |
public static short parseFloat(String s) | 将字符串参数转换为对应的float基本类型。 |
public static short parseDouble(String s) | 将字符串参数转换为对应的double基本类型。 |
public static short parseBoolean(String s) | 将字符串参数转换为对应的boolean基本类型。 |
Character不可以将字符串转换为对应的基本类型
04.Arrays类介绍
1.介绍:
方法名 | 说明 |
---|---|
public static String toString(类型[] a) | 将数组元素拼接为带有格式的字符串 |
public static boolean equals(类型[] a, 类型[] b) | 比较两个数组内容是否相同 |
public static int binarySearch(int[] a, int key) | 查找元素在数组中的索引(二分查找法) |
public static void sort(类型[] a) | 对数组进行默认升序排序 |
2.冒泡排序
相邻的两个数进行比较, 如果第一个比第二个大, 就交换他们两个
public class BubbleSort {
public static void main(String[] args) {
int arr[] = {11,55,44,22,33};
for (int i = 0; i < arr.length-1; i++) {
for (int j = 0; j < arr.length-1-i; j++) {
int temp;
if (arr[j]>arr[j+1]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
}
3.选择排序
从 0 索引开始,拿着每一个索引上的元素跟后面的元素依次比较
public class SelectSort {
public static void main(String[] args) {
int arr[] = {11,55,44,22,33};
for (int i = 0; i < arr.length-1; i++) {
for (int j = i+1; j < arr.length; j++) {
if (arr[i] > arr[j]){
int temp;
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
}
4.二分查找(折半查找)
二分查找的前提 : 必须是排好序的数据
1.定义两个变量记录最小索引, 和最大索引
2.折半的动作不止一次, 应该使用循环
条件 while(min <= max)
3.循环中计算出中间索引
4.加入判断
- 元素如果大于中间元素 : min = mid + 1;
- 元素如果小于中间元素 : max = mid – 1;
- 元素如果等于中间元素 : 将索引返回 (mid)
public static int BinarySearch(int arr[] , int num){
int min = 0;
int max = arr.length - 1;
while (min<=max){
int mid = (min + max)/2;
if (num < arr[mid]){
max = mid - 1;
}else if(num > arr[mid]){
min = mid + 1;
}else {
return mid;
}
}
return -1;
}
5.正则表达式
正则表达式 :
本质来说就是一个字符串, 可以指定一些规则, 来校验其他字符串