java 一文讲透API [常用类 + 常用工具](20万字博文)

目录

一、前言

二、API 简介

        1.什么是API?

        2.java中组件的层次结构 : 

        3.什么是模块

三、API(常用类)

        1.Object类

        2.String类

        3.StringBuilder 和 StringBuffer类

        4.Math类 和 System类

        5.Date 和 Calender类

        6.八大包装类

        7.常用类补充  ——  Arrays类

        8.常用类补充  ——  BigInteger 和 BigDecimal类

四、API(常用工具)

        1.集合

        2.IO流

                0° 拾枝杂谈

                1° 异常基础

                2° File类基础

                3° IO流基础

五、API 专题总结


一、前言

  • 本篇博文是对Java API 的一个全面总结,同时也囊括了我们《API-常用类》” 以及 《API-常用工具》” 两大专题的几乎全部内容。屏幕前的你一定或多或少地听说过“API”这个由三个字母组成的响亮名号;up出这篇博文的目的重点是梳理Java中的常用类和常用工具(集合 + IO),而不是重点说API本身。
  • 本篇博文将会从API介绍API常用类,以及API常用工具这三个大的方面同大家娓娓而谈。
  • Java-常用类部分涵盖了诸如Object,String,StringBuffer和StringBuilder,八大包装类等所有常用类
  • Java-常用工具部分包括了集合篇章的全部内容和IO流篇章的全部内容;
  • 注意事项 : 代码中的注释也很重要;不要眼高手低,自己跟着过一遍才真正有收获;点击侧边栏目录或者文章开头的目录可以跳转。
  • 良工不示人以朴,up所有文章都会适时完善。大家有问题都可以在评论区互相交流或者私信up。感谢阅读!

二、API 简介

        1.什么是API?

        API全称"Application Programming Interface",指应用程序编程接口。当然,我们这里说的API指的是API文档,通常叫做“java文档”,是Java中提供的类的使用说明书

        我们可以直接在浏览器搜索“API+ 当前使用的JDK的版本号”就可以找到java官方的API文档,如下图所示 : 

        API(JDK17.0)链接如下 : 

https://docs.oracle.com/en/java/javase/17/docs/api/icon-default.png?t=N7T8https://docs.oracle.com/en/java/javase/17/docs/api/        那么,有了API我们能做些什么呢?

        当我们遇到没见过的类或者方法,就可以直接在API文档中进行查找。

        以String类为例,首先在搜索框输入String,并确定要查看的String类。如下图所示,

        点击进入后,首先我们可以看到一些关于String类的简单介绍,包含类属于哪个模块哪个包下,以及它的一些继承关系和实现关系。如下图所示 : 

        并且,该类所有的构造器,属性,和方法都被列举在了API文档中并出给了说明。如下图所示 : 

        当然,你也可以利用浏览器自带的翻译功能将页面翻译为中文。不过,up建议,除非是真的看不懂的情况下,不建议使用中文的API文档。 

        2.java中组件的层次结构 : 

        模块(module)——> 包(package)——> 类或接口(class / interface

        3.什么是模块

        module,模块,是 java9 开始提供的一种新的java基础组件,在包(package)的基础上又进行了一次封装,可以认为是包的容器。


三、API(常用类)

        1.Object类

                链接如下 : 

Java Object类 万字详解(通俗易懂)icon-default.png?t=N7T8https://blog.csdn.net/TYRA9/article/details/129293721


                Object类主要内容包括 : 

                ①Object类基本介绍

                ②Object类构造方法

                ③Object类成员方法

                ④JavaBean 重写 Object类的方法

        2.String类

                链接如下 : 

Java String类 万字详解(通俗易懂)icon-default.png?t=N7T8https://blog.csdn.net/TYRA9/article/details/129348766


                String类主要内容包括 : 

                ①String类介绍和溯源

                ②String类构造器

                ③不同方式创建String类对象的区别

                ④String类常用成员方法(判断功能 + 获取功能 + 转换功能)

        3.StringBuilder 和 StringBuffer类

                链接如下 : 

Java StringBuffer 和 StringBuilder 深度讲解icon-default.png?t=N7T8https://blog.csdn.net/TYRA9/article/details/129368975


                StringBuilder 和 StringBuffer类主要内容包括 : 

                ①StringBuffer类介绍和溯源

                ②StringBuffer类常用构造器和常用方法

                ③StringBuffer类  VS  String类

                ④StringBuilder类介绍和溯源

                ⑤StringBuilder类常用构造器和常用方法

        4.Math类 和 System类

                链接如下 : 

Java Math类 和 System类 详解(通俗易懂)icon-default.png?t=N7T8https://blog.csdn.net/TYRA9/article/details/129420332


                Math 和 System类主要内容包括 : 

                ①Math类介绍

                ②Math类常用方法演示

                ③System类介绍

                ④System类常用方法演示

        5.Date 和 Calender类

                链接如下 : 

Java Date类 和 Calendar类 万字详解(通俗易懂)icon-default.png?t=N7T8https://blog.csdn.net/TYRA9/article/details/129449704


                Date 和 Calendar类主要内容包括 : 

                ①Date类介绍

                ②SimpleDateFormat类介绍和引入

                ③Calendar类介绍

                ④Calendar类使用

                ⑤LocalDateTime,LocalDate,LocalTime的引入和使用

                ⑥时间戳Instant的引入和使用

        6.八大包装类

                链接如下 : 

Java 八大包装类 万字详解(通俗易懂)icon-default.png?t=N7T8https://blog.csdn.net/TYRA9/article/details/129317036


                八大包装类主要内容包括 : 

                ①包装类简介和溯源

                ②关于拆箱和装箱

                ③String类型与基本类型的相互转化

                ④String类型与包装类型的相互转化

                ⑤八大包装类的常用成员方法汇总(含演示)

        7.常用类补充  ——  Arrays类

        ①前言

        关于Arrays类,up有些纠结。诚然,Arrays类中一些方法的使用频率还是比较可观的。但是吧,如果单独出一篇博文仅仅去演示Arrays类的常用方法,多少显得没有营养,有些水博文的味道,虽然up很喜欢水博文(bushi);可如果讲得细致一些,包含Arrays类的源码解读和断点调试的过程,放到基础阶段又有些突兀,因为Arrays类的一些方法,在底层源码中不但涉及了java 四种内部类中最难的匿名内部类(内部类up已讲过,放在了 java 进阶专栏,非此基础专栏),而且牵涉到数据结构与算法中的查找等内容(up计划将来发布到 java 数据结构与算法专栏)。因此,Arrays类对于"力求完美"的up来说,就属于这么一个上不上,下不下的位置,相当尴尬。思绪良久,最终计划先暂时将它作为一个补充类放到本篇API总结博文中的常用类位置,简单演示一下它的几个常用方法,明面上也算是我讲到过了。之后如果有机会,我们再对它进行仔细剖析。

        ②简介

        Arrays类是常用类中的一个工具类,其中包含了一系列静态方法,用于管理和操作数组(比方说查找和排序)。

        ③常用方法介绍演示

                1° static String toString(..[] a) : 

                该方法可以将指定类型的数组转换为String类型的表示。这里的"指定类型"既可以是八大基本数据类型,还可以是引用类型。

                2°static void sort(..[] a) : 

                该方法可以将指定类型的数组进行升序排序。

                3°static int binarySearch(..[] a, .. key) : 

                该方法可以在一个有序数组中查找某个元素是否存在。需要传入数组和要查找的元素。若存在,返回当前元素在数组中的位置,若不存在,确定当前元素在数组中按大小排序应该所在的位置,并返回 - (该位置索引 + 1)。

                4°static ..[] copyOf(..[] original, int newLength) : 

                该方法可以将原数组中指定长度的内容拷贝到新数组中。若指定长度大于原数组长度,则多出来的部分以默认值填充。

                Δ演示 : 

                up以Arrays_类为演示类,代码如下 : 

package csdn.knowledge.api.arrays;

import java.util.Arrays;
import java.util.Objects;

public class Arrays_ {
    public static void main(String[] args) {
    //演示 : Arrays类常用方法
        //1.static String toString(...[] a) :
            int[] array_0 = new int[]{0, 1, 2, 3, 5};
            double[] array_1 = new double[]{2.33, 11.2, 5.5555, 23.24, 211.8};
            Integer[] array_2 = new Integer[]{0, 2, 33, 77, 11, 2, 5};
            String strArray_0 = Arrays.toString(array_0);
            String strArray_1 = Arrays.toString(array_1);
            String strArray_2 = Arrays.toString(array_2);

            System.out.println("array_0的String类型表示 = " + strArray_0);
            System.out.println("array_1的String类型表示 = " + strArray_1);
            System.out.println("array_2的String类型表示 = " + strArray_2);
            System.out.println("==================================");

        //2.static void sort(...[] a) :
            Arrays.sort(array_0);
            Arrays.sort(array_1);
            Arrays.sort(array_2);
            System.out.println("array_0数组升序排序后的字符串表示形式 = " + Arrays.toString(array_0));
            System.out.println("array_1数组升序排序后的字符串表示形式 = " + Arrays.toString(array_1));
            System.out.println("array_2数组升序排序后的字符串表示形式 = " + Arrays.toString(array_2));
            System.out.println("==================================");

        //3.static int binarySearch(...a, ... key) :
            int[] ints = new int[]{1, 2, 5, 11, 23, 24, 77, 141, 211, 985};
            System.out.println("11在ints数组中存在吗,存在请返回索引:" + Arrays.binarySearch(ints, 11));
            System.out.println("77在ints数组中存在吗,存在请返回索引:" + Arrays.binarySearch(ints, 77));
            System.out.println(" 1在ints数组中存在吗,存在请返回索引:" + Arrays.binarySearch(ints, 1));
            System.out.println("==================================");

        //4.static ...[] copyOf(...[] original, int newLength) :
            String[] names1 = new String[]{"大伟哥", "王天一", "钟离", "布洛妮娅", "三鹰仁", "雪之下"};
            String[] names2 = Arrays.copyOf(names1, 3);      //拷贝三个元素过去
            String[] names3 = Arrays.copyOf(names1, names1.length);     //全部拷贝过去
            System.out.println("新数组names2 = " + Arrays.toString(names2));
            System.out.println("新数组names3 = " + Arrays.toString(names3));
    }
}

                运行结果 : 

        8.常用类补充  ——  BigInteger 和 BigDecimal类

        ①前言

        关于BigInteger 和 BigDecimal类,补充这两个类是因为——在某些情况下,我们需要存储或使用非常大的数,比如中国2022年的GDP总值,120万亿,这时候你就算拿long类型存储,也放不下,如下图所示 : 

        再比如,某些情况下,我们需要得到一个精度非常高的小数,比如说圆周率PI 的前30位。就算你用double类型也无法全部保存,虽然IDEA并不会向long类型一样直接报错,但是如果你设法直接输出数据,就会丢失精度。如下所示 : 

    //以下代码仅作演示用,无实际意义。        
    public static void main(String[] args) {
        double temp_b_0 = 3.141592653589793238462643383279;
        System.out.println(temp_b_0);
    }

        输出结果 : 

        因此,为了解决以上两个问题,我们就需要用到BigInteger类BigDecimal类

        ②简介

        BigInteger类型的数字范围较Integer,Long类型的数字范围要大得多,它支持任意精度的整数,也就是说在运算中 BigInteger 类型可以准确地表示任何大小的整数值而不会丢失任何信息

        BigDecimal类则可以保存精度远超double可保存范围内的小数,而不造成数据丢失

        BigInteger类和BigDecimal类都属于java.base模块,java.math包下。这俩之所以这么牛逼,原因在于它们的底层是把一个超大的数或者一个超高精度的小数当成字符串来进行处理的。想使用BigInteger对象 和 BigDecimal对象保存的数进行运算,需要用到类中对应的方法。如下 : 

        ③常用方法介绍演示

                Δ前言 : 因为二者的一些方法在具体使用时大同小异,而且本身这俩就是常用类的一个补充内容,因此此处“方法介绍”中,up仅以BigInteger类为例。(但实际演示中俩个都会演示到的)

                ①BigInteger add(BigInteger val) : 

                该方法可以对BigInteger类对象保存的超大数进行加法运算。可以不作接收。(传入的形参的加数)

                ②BigInteger subtract(BigInteger val) : 

                同上,但进行减法运算。(传入的形参为减数)

                ③BigInteger multiply(BigInteger val) : 

                同上,但进行乘法运算。(传入的形参为乘数)

                ④BigInteger divide(BigInteger val)

                同上,但进行除法运算。(传入的形参为除数)

                Δ演示 : 

                up以BigBig类为演示类,代码如下 : 

package csdn.knowledge.api.big;

import java.math.BigDecimal;
import java.math.BigInteger;

public class BigBig {
    public static void main(String[] args) {
    //演示1 : BigInteger
        //超大数演示
        BigInteger bigInteger = new BigInteger("120000000000000");
        System.out.println("2022年中国国内GDP总值 = " + bigInteger);
        System.out.println("-----------------------------");
        //加法运算
        BigInteger bigInteger1 = new BigInteger("666666666666666666");
        BigInteger bigInteger2 = new BigInteger("333333333333333334");
        System.out.println("超大数1 + 超大数2 = " + bigInteger1.add(bigInteger2));
        //减法运算
        System.out.println("超大数1 - 超大数2 = " + bigInteger1.subtract(bigInteger2));
        //乘法运算
        System.out.println("超大数1 * 超大数2 = " + bigInteger1.multiply(bigInteger2));
        //除法运算
        System.out.println("超大数1 / 6 = " + bigInteger1.divide(new BigInteger("6")));
        System.out.println("\n=============================================================\n");

    //演示2 : BigDecimal
        //超高精度小数演示
        BigDecimal bigDecimal = new BigDecimal("1970.111200123445677889");
        System.out.println("来整个超高精度小数: " + bigDecimal);
        System.out.println("-----------------------------");
        //加法运算
        BigDecimal bigDecimal1 = new BigDecimal("24.4444444444444444444444444444");
        BigDecimal bigDecimal2 = new BigDecimal("1.5555555555555555555555555556");
        System.out.println("超高精度数1 + 超高精度数2 = " + bigDecimal1.add(bigDecimal2));
        //减法运算
        System.out.println("超高精度数1 - 超高精度数2 = " + bigDecimal1.subtract(bigDecimal2));
        //乘法运算
        System.out.println("超高精度数1 * 超高精度数2 = " + bigDecimal1.multiply(bigDecimal2));
        //除法运算
        System.out.println("超高精度数1 / 2 = " + bigDecimal1.divide(new BigDecimal("2")));
    }
}

        运行结果 : 

        ④关于BigDecimal类的一些补充 : 

        在使用BigDecimal类的divide方法时——即进行超高精度小数的除法运算时,注意,jvm可能会抛出异常。这是因为,如果两个小数的相除结果为无限小数时,就算你BigDecimal类对象可以保存特别长,精度特别高的小数,但是你究竟是不能保存一个无限长的小数的。因此这时候jvm会抛出ArithmeticException(算术异常),如下图所示 : 

        当然,对于上述问题java提供了补救的办法。你可以在使用divide方法时额外传入一个参数"RoundingMode.CEILING",如下 : 

 bigDecimal1.divide(bigDecimal2, RoundingMode.CEILING)

        传入 RoundingMode.CEILING 参数后,可以将运行结果默认保留至分子小数位数,即截取到无限小数前面和分子相同位数的地方停止。


四、API(常用工具)

        1.集合

                链接如下 : 

Java 一文讲透集合框架(十万字博文)icon-default.png?t=N7T8https://blog.csdn.net/TYRA9/article/details/129899534                常用工具——集合篇章主要内容包括 : 

                ①集合简介

                ②集合框架图

                ③List集合 万字详解(含源码分析)

                ④Set集合 万字详解(含源码分析)

                ⑤增强for和迭代器 万字详解

                ⑥Map集合 万字详解(含源码分析)

                ⑦Collections类 详解

                ⑧泛型 详解

                ⑨集合框架总结

        2.IO流

                0° 拾枝杂谈

        常用工具——IO流篇章内容较多较杂;up将其分为三部分——异常基础File类基础IO流基础

                1° 异常基础

                链接如下 : 

Java 异常基础 万字详解(通俗易懂)icon-default.png?t=N7T8https://blog.csdn.net/TYRA9/article/details/127295364                异常基础主要内容包括 : 

                ①异常概述

                ②异常分类

                ③异常的产生机制

                ④异常相关

                ⑤异常处理

                ⑥异常进阶

                2° File类基础

                链接如下 : 

Java File类基础 万字详解icon-default.png?t=N7T8https://blog.csdn.net/TYRA9/article/details/127541155                File类基础主要内容包括 : 

                ①File类构造方法的演示

                ②File类成员方法的演示(详细)

                3° IO流基础

                链接如下 : 

Java IO流基础 万字详解(通俗易懂)icon-default.png?t=N7T8https://blog.csdn.net/TYRA9/article/details/127337688                IO流基础主要内容包括 : 

                ①IO流简介(详细)

                ②字符流读写文件(详细)

                ③字节流读写文件(详细)


五、API 专题总结

  • 🆗,以上就是我们API(常用类 + 常用工具)的全部内容了。其实,up是把 Java SE 的两个专题[《API-常用类》专题 《API-常用工具》专题] 放在一块儿了。
  • 对于《API-常用类》专题,常用类重点的地方就在于它们各自的常用方法,就和Linux系统下的一些常用指令一样,你能用起来6的飞起,就已经顶好了。
  • 而对于《API-常用工具》专题,又可分为 集合篇章  IO流篇章,内容相当多。对于集合篇章,没得说就是各个经典实现类的底层源码了(例如ArrayList,Vector,HashSet,HashMap,LinkedHashMap等),对于它们的底层机制要熟悉,最好能把每个类的底层源码都自己下来Debug扣一扣。对于IO流篇章——异常这一块儿主要是异常的产生机制,以及异常的处理,必须掌握;对于File类,把常用的一些方法用熟练就可以了;对于IO流基础,字符流字节流的体系图,还有缓冲流、拷贝文件的具体用法,这些都要掌握。
  • 下一专题——《Java 反射》(PS:up将Java SE基础共分为了六大专题,分别是①《学习面向对象之前所需要的知识》;②《面向对象》;③《API-常用类》;④《API-常用工具》;⑤《反射》;⑥《多线程》),我们不见不散。感谢阅读!

        System.out.println("END------------------------------------------------------------------------------");

  • 16
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: ESD(Electrostatic Discharge,静电放电)是一种瞬时放电现象,通常是由人体或设备上积累的静电电荷引起的。一般来说,ESD会导致电子设备损坏或误操作,因此必须采取措施来避免ESD。 在设计中,ESD保护应该开始于PCB的物理设计。一个好的物理设计将使ESD泄放的能量尽可能地均匀地分散到整个电路板上。这种物理设计包括有效的接地,涂覆和排列PCB层。同时,这也需要考虑到整个系统的电缆结构、机箱接地和隔离等因素,从而最大限度地提高整个系统的耐ESD能力。 此外,在设计电路时,还需要考虑到ESD保护措施。主要的保护措施包括使用可靠的ESD保护器件,如TVS器件、瞬变压抑器和热释电器件,以保护线路免受ESD的影响。此外,在设计输入、输出和供电接口时,还应该采用合适的线路过滤器和电容器,以进一步提高系统的ESD耐受性。 最后,测试是ESD保护设计的重要环节。ESD测试可以验证保护设计的有效性,并排除措施上的缺陷。通常,测试人员会使用标准ESD模拟器来模拟真实的ESD事件。在测试过程中,应注意对设备进行预处理,如去静电和适当的人体模拟。此外,还应该制定合适的检验标准以确保测试的准确性和可重复性。 总之,ESD保护设计至关重要,因为它能够保护电子设备免受静电放电的损害。为了实现可靠的ESD保护,这需要考虑物理设计和电路设计,以及有效的测试工具。最后,只有将所有这些因素合理结合,才能实现有效的ESD保护设计。 ### 回答2: ESD(Electrostatic Discharge,静电放电)指的是在两个带有不同电荷的物体接触或者靠近时,电荷之间发生放电的现象。这种放电可以对各种电子元器件和电路造成损害,从而影响设备的性能和寿命。 ESD的原理可以通过三种方式传递:空气中的放电、直接接触和电感耦合。在实际应用中,ESD对硅芯片、存储器、晶体管等电子元件的损害是非常严重的,这些元件的特性和结构容易受到ESD的影响。 为了防止ESD对电子元件和电路的损坏,需要在设计中采用一些专门的技术,比如在元器件和电路板上增加ESD保护电路、在设备外壳上增加处理工艺等。对于集成电路芯片而言,可以采用对基底和指的进行控制,以及在芯片电路设计过程中合理选择元器件和适当布局等。 总之,ESD保护是电子元器件和电路设计中非常重要的一环,需要采用针对性的技术来减缓和防止ESD对设备的影响,从而保证设备的长期稳定性和可靠性。 ### 回答3: ESD全程为静电放电,是由于静电在两者之间产生的高电压放电引起的电感和电容的相互作用。在现代电子系统中,由于设备的电路越来越小,因此更容易受到静电干扰,人们不得不在设计中考虑如何避免或降低这种静电干扰。本文将从ESD的原理出发,简要介绍如何在电路设计中考虑防止ESD干扰。 ESD的产生是由于静电的积累导致的高电压放电,因此防止ESD干扰的基本原则是减小静电的积累。在电路设计中,静电主要通过两个方面来进行干扰:一是直接放电干扰,即静电直接放电到电路中,导致电路损坏;二是间接放电干扰,即静电放电到设备的金属外壳等部位,导致电磁场干扰影响电路的正常工作。因此,在设计中,需要采用一些措施来减小这些干扰。 1. 选择合适的元器件:在元器件的选择上,要选择一些抗ESD干扰的元器件,如采用ESD保护二极管等,能够减小ESD对电路的影响。 2. 优化电路结构:在电路设计中,要优化电路结构,减少电路间的交叉干扰,避免电路产生高电位差,这样能够减少静电的积累和ESD的辐射。 3. 采用ESD保护电路:在设计电路时,引入一些ESD保护电路,能够有效地减小ESD对电路的影响。例如采用Zener二极管、TVS二极管等保护电路。 在总体设计中,需要综合以上措施,采用一些适合的方案来消除ESD对电路的干扰。同时,在实际使用中,也需要对电路进行定期维护和检测,保证电路的正常运行。在电子技术的快速发展中,ESD防护的问题只会越来越重要,只有对其进行深入的研究和应用,才能更好地保证电子设备的稳定运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cyan_RA9

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值