API

Rover20230226 / 2023-08-08 / 原文

API

快捷键
	ctrl + alt + m(method)	抽取方法
	ctrl + 鼠标左键		查看源码
	alt + insert	生成 equals and hashcode
# API

1. API: 应用程序编程接口

2. Math(应用)
    abs/ceil/floor/round/max/min/pow/random

3. System(应用)
    exit/currentTimeMillis/arraycopy
    1). 终止循环
    	break;	// 中止当前循环
    	return;	// 中止当前方法
    	System.exit(0);	// 0表示正常退出		中止当前所有程序
    	System.exit(1);	// 非0表示异常退出
    	
     2). 获取当前时间毫秒值(时间最小单位: 毫秒)
     	long time = System.currentTimeMillis();
     	1秒 = 1000毫秒
     	时间原点: 1970年1月1日0时0分0秒
     3). System.arraycopy(original, index, dest, index2, length)
     	original : 源数组
     	index : 源数组的起始索引
     	dest : 目标数组
     	index2 : 目标数组的起始索引
     	length : 复制的长度
     	

    🌙案例:打印10000次的耗时

4. Object类中的toString方法
    1). 面向对象编程(OOP:Object oriented programming)
    	父类是所有子类的共性抽取
    2). native(本地方法)
    	(1) 本地方法的方法体是用 C/C++ 写在 JVM 中
    	(2) java中的本地方法看似没有方法体,实际上是在底层调用 C/C++ 代码
    	(3) 编程语言发展(以牺牲效率为代价,以提高阅读性)
    		1. 机器语言
    		2. 汇编语言
    		3. c语言
    		4. 面向对象语言
    3). 抽象数据类型的对象
     	Student s = new Student("张三", 18);
     	System.out.println(s);
     	

    (1) 现象:
    	直接打印: 内存地址值
     (2) 源码:
     	println打印一个Object类型的对象,
     		底层会默认先调用其toString方法转换成字符串
         println打印一个String类型的对象
         	直接打印
     (3)需求:
     	打印内存地址没有意义,想要输出对象的值

    4). Object中的toString方法
     	(1) Object中toString方法
     		获取此对象的类型 + 内存地址的哈希码值
         (2) 经常在开发测试时:
         	让我们的自定义类型重写toString方法,
         	这样此类型对象直接打印,会打印toString返回值

5. Object类中的equals方法
    1). object中的equals方法
    	底层就是==,比较的是内存地址值
	2). 需求: 比较内存地址没有意义,希望比较对象属性值
	3). 实现: 重写equals方法

     ⭐基础面试题
     	// s1保存的是字符串常量池中常量"abc"的地址
    	String s1 = "abc";
    	// s2保存的是堆中对象String的地址
    	String s2 = new String("abc");
        String s3 = "abc";
        String s4 = new String("abc");
        System.out.println(s1==s2);	// false
        System.out.println(s1==s3); // true
        System.out.println(s2==s4); // false
        // 因为String重写了equals方法,
        System.out.println(s2.equals(s1)); // true

6. 函数式接口: 有且仅有一个抽象方法(需要被重写)的接口
    	有些抽象不需要被重写
    equals 不需要被重写的抽象方法(接口中)
    接口定义的跟Object类声明一致的方法,都不需要被重写
    在类继承接口中,Dog是Object的子类,从Object继承过来的equals方法,变相重写了Animal

7. Objects(应用)
	toString(对象)/toString(对象, 默认字符串)/isNull(对象)/onoNull(对象)

8. BigDecimal
	1). 构造方法
    	BigDecimal(double val)
    	BigDecimal(String val)
    2). 精度损失
        float(8字节) 指数运算 8位当底数 24位当指数
        2^0=1 2^1=2 2^2=4

        1. 整型: 取值范围本质遍历字节所有的取值方式
        2. 浮点型: 以一部分字节作为底数, 另一部分作为指数

        问题:
            1. 这样浮点型可以用少的字节数, 表示更大的数
            2. 一些正常计算有可能精度丢失
    3). 常用方法
    	add/subtract/multiply/divide/divide(另一对象, 精确几位, 舍入模式)