JavaSE-常用API

Posted 雷哒哒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaSE-常用API相关的知识,希望对你有一定的参考价值。

技术图片

目录

第一章:API概述

什么是API?

? API(Application Programming Interface),应用程序编程接口。Java API是一本程序员的 字典 ,是JDK中提供给

我们使用的类的说明文档。这些类将底层的代码实现封装了起来,我们不需要关心这些类是如何实现的,只需要学

习这些类如何使用即可。所以我们可以通过查询API的方式,来学习Java提供的类,并得知如何使用它们。

API使用步骤

  1. 打开帮助文档。
  2. 点击显示,找到索引,看到输入框。
  3. 你要找谁?在输入框里输入,然后回车。
  4. 看包。java.lang下的类不需要导包,其他需要。
  5. 看类的解释和说明。
  6. 学习构造方法。
  7. 使用成员方法

第二章:Scanner类

Scanner类介绍

一个可以解析基本类型和字符串的简单文本扫描器

使用步骤

  • 导包:import java.util.Scanner;

  • 构造函数:public Scanner(InputStream source)

  • 常用方法:

    1. public String next() 查找并返回来自此扫描器的下一个完整标记
    2. public int nextInt()将输入信息的下一个标记扫描为一个 int
  • 代码

      public static void main(String[] args) {
        System.out.println("请输入您的姓名:");
        String name = new Scanner(System.in).next();
        System.out.println("请输入您的年龄:");
        int age = new Scanner(System.in).nextInt();
        System.out.println("您的姓名:" + name);
        System.out.println("您的年龄:" + age);
      }

第三章:Random类

Random类介绍

此类的实例用于生成伪随机数流。

Random类使用步骤

  • 导包:import java.util.Random;

  • 构造方法:public Random()

  • 常用方法:

    1. public int nextInt(int n)返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int 值
  • 代码:

      public static void main(String[] args) {
        Random random = new Random();
        // 获取 0-1之间的随机数
        double num1 = random.nextDouble();
        System.out.println(num1);
        // 获取 0-3之间的随机整数数
        int num2 = random.nextInt(4);
        System.out.println(num2);
        // 获取 1-3之间的随机整数
        int num3 = random.nextInt(3) + 1;
        System.out.println( num3 );
      }

第四章:ArrayList类

ArrayList介绍

java.util.ArrayList 是大小可变的数组的实现,存储在内的数据称为元素。此类提供一些方法来操作内部存储

的元素。 ArrayList 中可不断添加元素,其大小也自动增长。

ArrayList的使用步骤

  • 导包:java.util.ArrayList <E>

  • 构造方法:public ArrayList()

  • 常用方法:

    1. public boolean add(E e):将指定的元素添加到此集合的尾部。
    2. public E remove(int index):移除此集合中指定位置上的元素。返回被删除的元素。
    3. public E get(int index):返回此集合中指定位置上的元素。返回获取的元素。
    4. public int size():返回此集合中的元素数。遍历集合时,可以控制索引范围,防止越界。
  • 代码:

      public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        // add
        list.add("张三");
        list.add("李四");
        list.add("王五");
        // remove
        list.remove(1);
        // size 和 get
        for (int i = 0; i < list.size(); i++) {
          System.out.println(list.get(i));
        }
        // contains
        System.out.println(list.contains("李四"));
      }

第五章:String类

概述

java.lang.String类代表字符串。

Java程序中所有的字符串文字(例如 "abc" )都可以被看作是实现此类的实例。

类 String 中包括用于检查各个字符串的方法,比如用于比较字符串,搜索字符串,提取子字符串以及创建具有翻 译为大写或小写的所有字符的字符串的副本。

特点

  1. 字符串不变:字符串的值在创建后不能被更改。

    String s1 = "abc";
    s1 += "d";
    System.out.println(s1); // "abcd"
    // 内存中有"abc","abcd"两个对象,s1从指向"abc",改变指向,指向了"abcd"。
  2. 因为String对象是不可变的,所以它们可以被共享。

    String s1 = "abc";
    String s2 = "abc";
    // 内存中只有一个"abc"对象被创建,同时被s1和s2共享。
  3. "abc" 等效于 char[] data={ ‘a‘ , ‘b‘ , ‘c‘ } 。

例如:
String str = "abc";
相当于:
char data[] = {'a', 'b', 'c'};
String str = new String(data);
// String底层是靠字符数组实现的。

导包和构造方法

  • 导包:import.lang.String

  • 构造方法:

    1. public String():初始化新创建的 String对象,以使其表示空字符序列。
    2. public String(char[] value) :通过当前参数中的字符数组来构造新的String。
    3. public String(byte[] bytes) :通过使用平台的默认字符集解码当前参数中的字节数组来构造新的 String。
  • 代码:

    // 无参构造
    String str = new String();
    // 通过字符数组构造
    char chars[] = {'a', 'b', 'c'};
    String str2 = new String(chars);
    // 通过字节数组构造
    byte bytes[] = { 97, 98, 99 };
    String str3 = new String(bytes);
    // 常用方式
    String str4 = "字符串";

判断功能的方法

  • 方法:

    1. public boolean equals (Object anObject) :将此字符串与指定对象进行比较。
    2. public boolean equalsIgnoreCase (String anotherString) :将此字符串与指定对象进行比较,忽略大小 写。
  • 代码:

      public static void main(String[] args) {
        String str1 = "hello";
        String str2 = "Hello";
        System.out.println(str1.equals(str2));  // false
        System.out.println(str1.equalsIgnoreCase(str2)); // true
      }

获取功能的方法

  • 方法:

    1. public int length () :返回此字符串的长度。
    2. public String concat (String str) :将指定的字符串连接到该字符串的末尾。
    3. public char charAt (int index) :返回指定索引处的 char值。
    4. public int indexOf (String str) :返回指定子字符串第一次出现在该字符串内的索引。
    5. public String substring (int beginIndex) :返回一个子字符串,从beginIndex开始截取字符串到字符 串结尾。
    6. public String substring (int beginIndex, int endIndex) :返回一个子字符串,从beginIndex到 endIndex截取字符串。含beginIndex,不含endIndex
    7. 7. public boolean contains(CharSequence s) 检测指定的子字符串是否存在。
  • 代码:

    public static void main(String[] args) {
        String str1 = "abc";
        String str2 = "defg";
        //1. `public int length ()` :返回此字符串的长度。
        System.out.println(str1.length());// 3
        //2. `public String concat (String str)` :将指定的字符串连接到该字符串的末尾。
        System.out.println(str1.concat(str2)); // abcdefg
        //3. `public char charAt (int index)` :返回指定索引处的 char值。
        System.out.println(str1.charAt(1)); // b
        //4. `public int indexOf (String str)` :返回指定子字符串第一次出现在该字符串内的索引。
        System.out.println(str1.indexOf("b")); // 1
        System.out.println(str1.indexOf("j")); // -1 不存在
        //5. `public String substring (int beginIndex)` :返回一个子字符串,从beginIndex开始截取字符串到字符 串结尾。
        System.out.println(str1.substring(1)); // bc
        //6. `public String substring (int beginIndex, int endIndex)` :返回一个子字符串,从beginIndex到 endIndex截取字符串。含beginIndex,不含endIndex
        System.out.println(str2.substring(1,3)); // ef
        // 7. public boolean contains(CharSequence s) 检测指定的子字符串是否存在
        System.out.println(str2.contains("ef"));  // true
        System.out.println(str2.contains("efgh"));  // false
      }

转换功能的方法

  • 方法:

    1. public char[] toCharArray () :将此字符串转换为新的字符数组。
    2. public byte[] getBytes ():使用平台的默认字符集将该 String编码转换为新的字节数组。
    3. public String replace (CharSequence target, CharSequence replacement) :将与target匹配的字符串使 用replacement字符串替换。
  • 代码:

      public static void main(String[] args) {
        String str1 = "abac";
        // 1. `public char[] toCharArray ()` :将此字符串转换为新的字符数组。
        char[]cs = str1.toCharArray();
        // 2. `public byte[] getBytes () `:使用平台的默认字符集将该 String编码转换为新的字节数组。
        byte[]bs = str1.getBytes();
        // 3. `public String replace (CharSequence target, CharSequence replacement`) :将与target匹配的字符串使 用replacement字符串替换。
        System.out.println(str1.replace("a","A")); // AbAc
      }

分割功能方法

  • 方法:

    1. public String[] split(String regex) :将此字符串按照给定的regex(规则)拆分为字符串数组。
  • 代码:

      public static void main(String[] args) {
        //`public String[] split(String regex)` :将此字符串按照给定的regex(规则)拆分为字符串数组。
        //创建字符串对象
        String s = "aa-bb-cc";
        String[] strArray = s.split("-"); // ["aa","bb","cc"]
        for(int x = 0; x < strArray.length; x++) {
          System.out.println(strArray[x]); // aa bb cc
        }
    
      }

第六章:Arrays类

概述

java.util.Arrays 此类包含用来操作数组的各种方法,比如排序和搜索等。其所有方法均为静态方法,调用起来 非常简单。

常用方法

  • 方法:

    1. public static String toString(int[] a):返回指定数组内容的字符串表示形式。
    2. public static void sort(int[] a) :对指定的 int 型数组按数字升序进行排序。
  • 代码:

    public static void main(String[] args) {
        int[]nums = {100,400,200,300,600,500};
        // 1. `public static String toString(int[] a) `:返回指定数组内容的字符串表示形式。
        System.out.println(Arrays.toString(nums));  // [100, 400, 200, 300, 600, 500]
        // 2. `public static void sort(int[] a)` :对指定的 int 型数组按数字升序进行排序。
        Arrays.sort(nums);
        System.out.println(Arrays.toString(nums));  // [100, 200, 300, 400, 500, 600]
    }

第七章:Math类

概述

? java.lang.Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。类似这样的工具 类,其所有方法均为静态方法,并且不会创建对象,调用起来非常简单。

方法

  • 方法:

    1. public static double abs(double a) :返回 double 值的绝对值。
    2. public static double ceil(double a)返回大于等于参数的最小的整数。
  • 代码:

      public static void main(String[] args) {
        System.out.println(Math.abs(-100));   // 100
        System.out.println(Math.ceil(10.1));  // 11.0
        System.out.println(Math.floor(10.1));  // 10.0
      }

第八章:Object类

概述

java.lang.Object类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。在对象实例化的时候,最终找的父类就是Object。

如果一个类没有特别指定父类, 那么默认则继承自Object类

根据JDK源代码及Object类的API文档,Object类当中包含的方法有11个。今天我们主要学习其中的2个:

  • public String toString():返回该对象的字符串表示。
  • public boolean equals(Object obj):指示其他某个对象是否与此对象“相等”。

toString方法

  • public String toString():返回该对象的字符串表示。toString方法返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值。由于toString方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因此也需要重写它。

  • 覆盖方法:

    public class Person {
      private String name;
      private int age;
      private String gender;
    
      @Override
      public String toString() {
        return "Person{" +
                "name='" + name + ''' +
                ", age=" + age +
                ", gender='" + gender + ''' +
                '}';
      }
    }

equals方法

  • public boolean equals(Object obj):指示其他某个对象是否与此对象“相等”。调用成员方法equals并指定参数为另一个对象,则可以判断这两个对象是否是相同的。这里的“相同”有默认和自定义两种方式。

  • 默认地址比较,如果没有覆盖重写equals方法,那么Object类中默认进行==运算符的对象地址比较,只要不是同一个对象,结果必然为false。

  • 对象内容比较,如果希望进行对象的内容比较,即所有或指定的部分成员变量相同就判定两个对象相同,则可以覆盖重写equals方法。

    public class Person {
      private String name;
      private int age;
      private String gender;
    
      @Override
      public String toString() {
        return "Person{" +
                "name='" + name + ''' +
                ", age=" + age +
                ", gender='" + gender + ''' +
                '}';
      }
    
      @Override
      public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof Person)) return false;
        Person person = (Person) o;
        return age == person.age &&
                Objects.equals(name, person.name) &&
                Objects.equals(gender, person.gender);
      }
    
      @Override
      public int hashCode() {
        return Objects.hash(name, age, gender);
      }
    }
    

Objects类

在刚才IDEA自动重写equals代码中,使用到了java.util.Objects类,那么这个类是什么呢?

JDK7添加了一个Objects工具类,它提供了一些方法来操作对象,它由一些静态的实用方法组成,这些方法是null-save(空指针安全的)或null-tolerant(容忍空指针的),用于计算对象的hashcode、返回对象的字符串表示形式、比较两个对象。

在比较两个对象的时候,Object的equals方法容易抛出空指针异常,而Objects类中的equals方法就优化了这个问题。方法如下:

  • public static boolean equals(Object a, Object b):判断两个对象是否相等。

我们可以查看一下源码,学习一下:

public static boolean equals(Object a, Object b) {  
    return (a == b) || (a != null && a.equals(b));  
}

第九章:Date类

Date基本使用

java.util.Date类 表示特定的瞬间,精确到毫秒。

继续查阅Date类的描述,发现Date拥有多个构造函数,只是部分已经过时,但是其中有未过时的构造函数可以把毫秒值转成日期对象。

  • public Date():分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒)。
  • public Date(long date):分配Date对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即1970年1月1日00:00:00 GMT)以来的指定毫秒数。
  • 常用方法:
    • public long getTime() 把日期对象转换成对应的时间毫秒值。

代码:

  public static void main(String[] args) {
    // 创建当前日期对象
    Date date = new Date();
    System.out.println(date);  // Sat Dec 07 17:29:13 CST 2019
    // 根据时间戳创建指定日期对象
    Date date2 = new Date(0);
    System.out.println(date2);  // Thu Jan 01 08:00:00 CST 1970
    // 返回当前日期的时间戳
    System.out.println(date.getTime());  // 1575710983951

  }

DateFormat日期格式类

  • 概述:java.text.DateFormat 是日期/时间格式化子类的抽象类,我们通过这个类可以帮我们完成日期和文本之间的转换,也就是可以在Date对象与String对象之间进行来回转换。

    • 格式化:按照指定的格式,从Date对象转换为String对象。
    • 解析:按照指定的格式,从String对象转换为Date对象。
  • 构造方法:由于DateFormat为抽象类,不能直接使用,所以需要常用的子类java.text.SimpleDateFormat。这个类需要一个模式(格式)来指定格式化或解析的标准。构造方法为:

    • public SimpleDateFormat(String pattern):用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat。参数pattern是一个字符串,代表日期时间的自定义格式。
  • 格式规则常用的格式规则为:

    标识字母(区分大小写) 含义
    y
    M
    d
    h
    m
    s
  • 常用方法

    • public String format(Date date):将Date对象格式化为字符串。
    • public Date parse(String source):将字符串解析为Date对象。
  • 代码

      public static void main(String[] args) throws ParseException {
        // 创建当前日期对象
        Date date = new Date();
        // 创建格式化对象
        DateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String dateStr = format.format(date);
        System.out.println(dateStr);   // 2019-12-07 05:37:53
        // 把格式化日期转换为日期对象
        Date date2 = format.parse("2100-12-12 12:12:12");
        System.out.println(date2);   // Sun Dec 12 00:12:12 CST 2100
      }

Calendar类

  • 概述:java.util.Calendar是日历类,在Date后出现,替换掉了许多Date的方法。该类将所有可能用到的时间信息封装为静态成员变量,方便获取。日历类就是方便获取各个时间属性的。

  • 获取Calendar对象:Calendar为抽象类,由于语言敏感性,Calendar类在创建对象时并非直接创建,而是通过静态方法创建,返回子类对象

    • public static Calendar getInstance():使用默认时区和语言环境获得一个日历
  • 常用方法:

    • public int get(int field):返回给定日历字段的值。
    • public void set(int field, int value):将给定的日历字段设置为给定值。
    • public abstract void add(int field, int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。
    • public Date getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。
  • field:Calendar类中提供很多成员常量,代表给定的日历字段:

    字段值 含义
    YEAR
    MONTH 月(从0开始,可以+1使用)
    DAY_OF_MONTH 月中的天(几号)
    HOUR 时(12小时制)
    HOUR_OF_DAY 时(24小时制)
    MINUTE
    SECOND
    DAY_OF_WEEK 周中的天(周几,周日为1,可以-1使用)
  • 代码:

      public static void main(String[] args) {
        // 获取日历对象
        Calendar calendar = Calendar.getInstance();
        // 获取当前日期的部分数据
        System.out.println(calendar.get(Calendar.YEAR));
        System.out.println(calendar.get(Calendar.MONTH));
        System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
        System.out.println(calendar.get(Calendar.HOUR_OF_DAY));
        System.out.println(calendar.get(Calendar.MINUTE));
        System.out.println(calendar.get(Calendar.SECOND));
        System.out.println(calendar.get(Calendar.DAY_OF_WEEK));
    
      }

第十章:System类

概述

java.lang.System类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作,在System类的API文档中,常用的方法有:

  • public static long currentTimeMillis():返回以毫秒为单位的当前时间。

  • public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length):将数组中指定的数据拷贝到另一个数组中。

    • 数组的拷贝动作是系统级的,性能很高。System.arraycopy方法具有5个参数,含义分别为:
    参数序号 参数名称 参数类型 参数含义
    1 src Object 源数组
    2 srcPos int 源数组索引起始位置
    3 dest Object 目标数组
    4 destPos int 目标数组索引起始位置
    5 length int 复制元素个数

代码

  public static void main(String[] args) {
    long startTime = System.currentTimeMillis();
    int[]nums1 = {1,2,3,4,5};
    int[]nums2={88,99,188};
    System.arraycopy(nums1,1,nums2,0,2);
    System.out.println(Arrays.toString(nums2));  // [2, 3, 188]
    long endTime = System.currentTimeMillis();
    System.out.println("共耗时:" + (endTime-startTime) + "毫秒");
  }

第十一章:StringBuilder类

字符串拼接问题

由于String类的对象内容不可改变,所以每当进行字符串拼接时,总是会在内存中创建一个新的对象,既耗时,又浪费空间。为了解决这一问题,可以使用java.lang.StringBuilder类。

概述

查阅java.lang.StringBuilder的API,StringBuilder又称为可变字符序列,它是一个类似于 String 的字符串缓冲区,通过某些方法调用可以改变该序列的长度和内容。

原来StringBuilder是个字符串的缓冲区,即它是一个容器,容器中可以装很多字符串。并且能够对其中的字符串进行各种操作。

它的内部拥有一个数组用来存放字符串内容,进行字符串拼接时,直接在数组中加入新内容。StringBuilder会自动维护数组的扩容。

构造方法

  • public StringBuilder():构造一个空的StringBuilder容器。
  • public StringBuilder(String str):构造一个StringBuilder容器,并将字符串添加进去。

常用方法

  • public StringBuilder append(...):添加任意类型数据的字符串形式,并返回当前对象自身。
  • public String toString():将当前StringBuilder对象转换为String对象。

代码:

public static void main(String[] args) {
    StringBuilder builder = new StringBuilder();
    for (int i = 0; i < 10000; i++) {
      builder.append(i);
    }
    System.out.println(builder.toString());
  }

第十二章:包装类

概述

Java提供了两个类型系统,基本类型与引用类型,使用基本类型在于效率,然而很多情况,会创建对象使用,因为对象可以做更多的功能,如果想要我们的基本类型像对象一样操作,就可以使用基本类型对应的包装类

如下:

基本类型 对应的包装类(位于java.lang包中)
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

装箱与拆箱

基本类型与对应的包装类对象之间,来回转换的过程称为”装箱“与”拆箱“:

  • 装箱:从基本类型转换为对应的包装类对象。
  • 拆箱:从包装类对象转换为对应的基本类型。

用Integer与 int为例:(看懂代码即可)

基本数值---->包装对象

Integer i = new Integer(4);//使用构造函数函数
Integer iii = Integer.valueOf(4);//使用包装类中的valueOf方法

包装对象---->基本数值

int num = i.intValue();

自动装箱与自动拆箱

由于我们经常要做基本类型与包装类之间的转换,从Java 5(JDK 1.5)开始,基本类型与包装类的装箱、拆箱动作可以自动完成。例如:

Integer i = 4;//自动装箱。相当于Integer i = Integer.valueOf(4);
i = i + 5;//等号右边:将i对象转成基本数值(自动拆箱) i.intValue() + 5;
//加法运算完成后,再次装箱,把基本数值转成对象。

基本数据类型和字符串互相转换

  • 基本数据类型转换字符串:基本类型的数据 + ""

  • 字符串转基本数据类型:除了Character类之外,其他所有包装类都具有parseXxx静态方法可以将字符串参数转换为对应的基本类型:

    • public static byte parseByte(String s):将字符串参数转换为对应的byte基本类型。
    • public static short parseShort(String s):将字符串参数转换为对应的short基本类型。
    • public static int parseInt(String s):将字符串参数转换为对应的int基本类型。
    • public static long parseLong(String s):将字符串参数转换为对应的long基本类型。
    • public static float parseFloat(String s):将字符串参数转换为对应的float基本类型。
    • public static double parseDouble(String s):将字符串参数转换为对应的double基本类型。
    • public static boolean parseBoolean(String s):将字符串参数转换为对应的boolean基本类型。

    代码使用(仅以Integer类的静态方法parseXxx为例)如:

    public class Demo18WrapperParse {
        public static void main(String[] args) {
            int num = Integer.parseInt("100");
        }
    }

    注意:如果字符串参数的内容无法正确转换为对应的基本类型,则会抛出java.lang.NumberFormatException异常。

以上是关于JavaSE-常用API的主要内容,如果未能解决你的问题,请参考以下文章

# Java 常用代码片段

JavaSE常用API

javaSE-day03(常用API一)

javase系列内部类-常用API

Java全栈JavaSE:17.常用类之Object类String类StringBuilder类

Express实战 - 应用案例- realworld-API - 路由设计 - mongoose - 数据验证 - 密码加密 - 登录接口 - 身份认证 - token - 增删改查API(代码片段