Java常用API

一、什么是 API

  • API(Application Programming interface)应用程序编程接口
  • 简单来说:就是 Java 帮我们已经写好的一些类和方法,我们直接拿过来用就可以了

二、Object 类

1. toString 方法

在这里插入图片描述

例如:

public class ToStringDemo {
    public static void main(String[] args) {
        Student stu = new Student("zhangsan",23);

        //如果Student类没有重写toString方法,那么打印的就是stu对象的地址
        System.out.println(stu);
        
        //两句代码含义一样
        System.out.println(stu.toString());
    }
}

2. equals 方法

在这里插入图片描述

3. Objects 概述

Objects 类与 Object 还是继承关系,Objects 类是从 JDK 1.7 开始之后才有的。

Objects 的常用方法:

在这里插入图片描述

三、Math 类

  • 包含执行基本数字运算的方法

常用方法:

在这里插入图片描述

四、System 类

  • System 的功能是静态的,都是直接用类名调用即可

常用方法:

在这里插入图片描述

例如1:

public static void main(String[] args) {
        //返回1970年1月1日0时0分0秒,到现在所经历过的毫秒值
        //一般可以用来计算程序执行的时间
        long start = System.currentTimeMillis();

        String s = " ";
        for (int i = 0; i < 10000; i++) {
            s += i;
        }
        System.out.println(s);
        
        long end = System.currentTimeMillis();
        System.out.println(end - start);
    }

例如2:

public static void main(String[] args) {
        int[] arr = {11,22,33,44,55,66};
        int[] newArr = new int[6];
        //数组拷贝
        System.arraycopy(arr,0,newArr,0,4);

        for (int i = 0; i < newArr.length; i++) {
            System.out.println(newArr[i]);
        }
    }

五、BigDecimal 类

  • 用于解决小数运算中,出现的不精确的问题

创建对象:

在这里插入图片描述

例如:

BigDecimal bd1 = new BigDecimal(0.5);//无法保证精确度,不推荐使用
BigDecimal bd2 = new BigDecimal("0.5");
BigDecimal bd3 = BigDecimal.valueOf(0.5);

常用方法:

在这里插入图片描述

例如:

public class BigDecimalDemo {
	public static void main(String[] args) {
		BigDecimal bd1 = BigDecimal.valueOf(0.6);
		BigDecimal bd2 = BigDecimal.valueOf(0.3);

		System.out.println(bd1.add(bd2));//加法
		System.out.println(bd1.subtract(bd2));//减法
		System.out.println(bd1.multiply(bd2));//乘法
		System.out.println(bd1.divide(bd2));//除法
	}
}

运行结果为:

0.9
0.3
0.18
2

注意:divide 除法细节

在这里插入图片描述

例如:

public class BigDecimalDemo {
    public static void main(String[] args) {
        BigDecimal bd1 = BigDecimal.valueOf(10);
        BigDecimal bd2 = BigDecimal.valueOf(3);

        BigDecimal result = bd1.divide(bd2, 2, BigDecimal.ROUND_HALF_UP);
        System.out.println(result);
        /*
            result作为BigDecimal的对象,打印时却是一个数,说明BigDecimal重写了toString方法
            但是如果想把该数据运用到Math类中的方法,需要转换为普通的数据类型
         */
        double a = result.doubleValue();
        System.out.println(Math.abs(a));
    }
}

运行结果为:

3.33
3.33

六、包装类

  • 将基本数据类型,包装成类(变成引用数据类型)
  • 变成类,就可以创建对象了,对象就可以调用方法方便的解决问题了
  • 8种基本数据类型都有它们所对应的包装类:
    在这里插入图片描述
  • 手动装箱:调用方法,手动将基本数据类型,包装成类
public class IntegerDemo {
    public static void main(String[] args) {
        /*
            1. public Integer(int value):通过构造方法
            2. public static Integer valueOf(int i):通过静态方法
         */
        int num = 10;
        Integer integer1 = new Integer(num);//此方法已过时,不推荐使用
        Integer integer2 = Integer.valueOf(num);
        System.out.println(integer2);
    }
}
  • 手动拆箱:调用方法,手动将包装类,拆成(转换)基本数据类型
public class IntegerDemo {
    public static void main(String[] args) {
        int num = 10;
        Integer integer2 = Integer.valueOf(num);
        /*
            public int intValue():以 int 类型返回该 Integer 的值
         */
        int i = integer2.intValue();
        System.out.println(i);
    }
}
  • 自动装箱:基本类型的数据和变量可以直接赋值给包装类型的变量
int num = 10;
Integer integer = num;
  • 自动拆箱:包装类型的变量可以直接赋值给基本数据类型的变量
int num = 10;
Integer integer = num;
int i = integer;

Integer 常用方法:

在这里插入图片描述

其它包装类的常用方法与 Integer 类似

练习:

已知字符串 String s = “10,50,30,20,40”; 请将该字符串转换为整数并存入数组。

public class IntegerTest {
    public static void main(String[] args) {
        String s = "10,50,30,20,40";

        //根据逗号作切割
        String[] arr = s.split(",");

        //准备一个整数数组,用来存储转换以后的数字
        int[] Arr = new int[arr.length];

        //遍历字符串数组
        for (int i = 0; i < arr.length; i++) {
            //将数字字符串转换为整数,并存入数组
            Arr[i] = Integer.parseInt(arr[i]);
        }

        for (int i = 0; i < Arr.length; i++) {
            System.out.println(Arr[i]);
        }
    }
}

运行结果为:

10
50
30
20
40

面试题:

public class IntegerTest2 {
    public static void main(String[] args) {
        Integer i1 = 127;
        Integer i2 = 127;
        System.out.println(i1 == i2);//true

        Integer i3 = 129;
        Integer i4 = 129;
        System.out.println(i3 == i4);//false
    }
}

判断自动装箱范围在 -128 ~ 127 之间
在:不会创建新的对象,而是从底层数组中直接获取
不在:重新 new 出新的 Integer 对象

八、Arrays 工具类

  • 数组操作工具类,专门用于操作数组元素

常用方法:

在这里插入图片描述

冒泡排序:

import java.util.Arrays;

public class BubbleSort {
    /*
        冒泡排序:相邻的两个数进行比较,如果第一个比第二个大,就交换他们两个

        第一轮:arr[0]-arr[1]  arr[1]-arr[2]  arr[2]-arr[3]  arr[3]-arr[4]  比较4次
        第二轮:arr[0]-arr[1]  arr[1]-arr[2]  arr[2]-arr[3]  比较3次
        第三轮:arr[0]-arr[1]  arr[1]-arr[2]  比较2次
        第四轮:arr[0]-arr[1]  比较1次
     */
    public static void main(String[] args) {
        int[] arr = {22, 55, 44, 33, 11};
        //外循环:控制比较的轮数
        for (int i = 0; i < arr.length - 1; i++) {
            //内循环:控制比较的次数
            for (int j = 0; j < arr.length - 1 - i; j++) {
                if (arr[j] > arr[j+1]) {
                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
        System.out.println(Arrays.toString(arr));
    }
}

选择排序:

import java.util.Arrays;

public class SelectSort {
    /*
        选择排序:从0索引开始,拿着每一个索引上的元素跟后面的元素依次比较

        第一轮:arr[0]-arr[1]  arr[0]-arr[2]  arr[0]-arr[3]  arr[0]-arr[4]
        第二轮:arr[1]-arr[2]  arr[1]-arr[3]  arr[1]-arr[4]
        第三轮:arr[2]-arr[3]  arr[2]-arr[4]
        第四轮:arr[3]-arr[4]
     */
    public static void main(String[] args) {
        int[] arr = {22, 55, 44, 33, 11};
        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 = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                }
            }
        }
        System.out.println(Arrays.toString(arr));
    }
}

二分查找(折半查找):

public class BinarySearch {
    /*
        二分查找(折半查找):

            前提:数组元素必须是排好序的

            思路:1.定义两个变量记录最小索引和最大索引
                 2.折半的动作不止一次,需要使用循环
                    条件:while(min <= max)

                 3.循环中计算出中间索引
                 4.加入判断
                    元素如果大于中间元素:min = mid + 1;
                    元素如果小于中间元素:max = mid - 1;
                    元素如果等于中间元素:将索引返回(mid)
     */
    public static void main(String[] args) {
        int[] arr = {11, 22, 33, 44, 55, 66, 77, 88};
        int result = binarySearch(arr,88);
        System.out.println(result);
    }

    private static int binarySearch(int[] arr,int num) {
        int min = 0;
        int max = arr.length - 1;
        int mid;

        while (min <= max) {
            mid = (min + max) / 2;
            if (num < arr[mid]) {
                max = mid - 1;
            }
            else if (num > arr[mid]) {
                min = mid + 1;
            }
            else return mid;
        }
        return -1;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值