美文网首页
JavaSE-常用API

JavaSE-常用API

作者: 雷哒哒 | 来源:发表于2019-12-07 18:10 被阅读0次
    JavaSE-API

    目录

    [TOC]

    第一章:API概述

    什么是API?

    ​ API,应用程序编程接口。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

          本文链接:https://www.haomeiwen.com/subject/xnwugctx.html