Java常用API

一、API概述

​ API (Application Programming Interface) : 应用程序编程接口

Java API :
	指的就是JDK中提供的各种功能的Java类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可,我们可以通过帮助文档来学习这些API如何使用

二、API文档的使用

​ ①打开API文档

​ ②找到索引选项卡中的输入框

​ ③输入要学习的类的名称,回车

​ ④看类在那个包下

​ ⑤看类的描述,知道这个类能干啥

​ ⑥看构造方法(参数个数,参数的类型)

​ ctry+alt+v 快速生成方法返回值

​ ⑦看成员方法(方法名,参数,返回值类型,方法的介绍)

三、Scanner类

使用的注意事项:

  1. next() :遇到空格,就不再录入数据

    ​ 结束标记:空格、tab键

  2. nextline():可以将数据完整的接收过来结束标记:回车换行符

  3. nextInt()那hextl ine()方法配台使用的时候,nextline方法就没有键盘录入的机会

    解决方案:

    建议:今后键盘承入数据的时候, 如果是 宇符串和整数一起接收, 建议使用next.方法接受字符申。

四、String

1.String类在java.lang包下,使用时不需要导包

2.java程序中,所有的双引号宇符串,都是String这 个类的对象

3.字符串是常量:它们的值(地址值)在创建之后不能更改

1、String常见的构造方法

①public Strin() 创建一个空白字符串对象 ,不含有任何内容

②public String(char[] chs) 根据字符数组的内容,来创建字符串对象

③public String(String original) :根据传 入的字符申内容,来创建宇符申对象

④String s =““abc”; 西接赋值的方式创建 字符串对象,内容就是abc

注意:

String这个类比较特殊,打印其对象名的时候,不会 出现内存地址而是该对象所记录的真实内容.

2、创建字符串对象的区别对比

以""方式给出的字符串,只要字符序列相同(顺序和大小写) ,无论在程序代码中出现几次,JVM都只会建立一个String对象,并在字符串常量池中维护

  • 问题:构造方法能创建对象,双引|号也能创建字符串对象,有什么区别吗?

  • 字符串的比较

    字符串是对象,它比较内容是否相同,是通过一个方法来实现的,这个方法叫: equalsO

    public boolean equals(Object anObject) :将此字符串 与指定对象进行比较。 由于我们比较的是字符串对象,所以参数直接传递一个字符串

  • 注意:==号作比较

    ​ 基本数据类型:比较的是具体的值

    ​ 引用数据类型:比较的是地址值

  • 字符串常量池:当使用双引号创建字符串对象的时候,系统会检查该字符串是否在字符串常量池中存在

    (不存在:创建; 存在:不会重新创建,而是直接复用)

  • 双引号创建的字符串对象与通过构造方法创建的字符串对象的区别?

    在这里插入图片描述

    在这里插入图片描述

结论:双引号创建的字符串对象,在字符串常量池中存储,通过构造方法创建的字符串对象,在堆内存中存储

3、String字符串的特点
  • Java程序中所有的双引号字符串,都是String类的对象

  • 字符串不可变,它们的值在创建后不能被更改

  • 虽然String的值是不可变的,但是它们可以被共享

  • 当字符串之间使用+号串联(拼接)的时候,系统底层会自动创建一个StringBuilder对象,然后再调用其append方法完成并接,拼接后,再调用其toString方法转换为String类型

  • 在这里插入图片描述

    在这里插入图片描述

4、字符串的两种遍历方式
import java.util.Scanner;

public class Test1 {
    public static void main(String[] args) {
        /**
         * 需求:键盘录入一个字符串,使用程序实现在控制台遍历该字符串
         *
         * 思路:
         * ①键盘录入一个字符串,用Scanner实现
         * ②遍历字符串,首先要能够获取到字符串中的每-一个字符
         *      ●public char charAt(int index) :返回指定索引处的char值,字符串的索引也是从0开始的
         * ③遍历字符串,其次要能够获取到字符串的长度
         *      ●public int length() :返回此字符串的长度
         *      ●数组的长度:数组名.length
         *      ●字符串的长度:字符串对象.length()
         *  ④遍历
         */
        // 1.键盘录入一个字符串,用Scanner实现
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入:");
        String s = sc.nextLine();
        // 2.遍历字符串,首先要能够获取到字符串中的每-一个字符
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            System.out.println(c);
        }
    }
}

import java.util.Scanner;

public class Test2 {
    public static void main(String[] args) {
        /**
         * 需求:键盘录入-个字符串,使用程序实现在控制台遍历该字符串
         * 思路:
         * ①键盘录入-个字符串,用Scanner实现
         * ②将字符串拆分为字符数组
         *      ●public char[ toCharArray() :将当前字符串拆分为字符数组并返回
         * ③遍历字符数组
         */
        // 1.键盘录入一个字符串,用Scanner实现
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入:");
        String s = sc.nextLine();
        // 2.将字符串拆分为字符数组
        char[] chars = s.toCharArray();
        // 3.遍历字符数组
        for (int i = 0; i < chars.length; i++) {
            System.out.println(chars[i]);
        }

    }
}
5、案例
案例一:统计字符次数

需求:键盘录入-一个字符串,统计该字符串中大写字母字符, 小写字姆字符,数字字符出现的次数(不考虑其他字符
思路:
①键盘录入-一个字符串,用Scanner实现
②要统计三种类型的字符个数,需定义三个统计变量,初始值都为0
③遍历字符串,得到每-个字符
④判断该字符属于哪种塑,然后对应类型的统计效+ 1
假如ch是一个字符,我要判断它属于大写字母,写字姆,还是数字,直接判断该字符是否在对应的范围即可

●大写字母: ch>=‘A’ &&ch<=‘Z’
●小写字母: ch>=‘a’ &&ch<=‘z’
●数字: ch>=‘0’&&ch<=‘9’

⑤.输出三种类型的字符个数

import java.util.Scanner;

public class Test3 {
    public static void main(String[] args) {
        //1.键盘录入-一个字符串,用Scanner实现
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入:");
        String s = sc.nextLine();

        //2.要统计三种类型的字符个数,需定义三个统计变量,初始值都为0
        int bigCount = 0;
        int smallCount = 0;
        int numCount = 0;

        //3.遍历字符串,得到每-个字符
        char[] chars = s.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            char c = chars[i];
            //4.判断该字符属于哪种塑,然后对应类型的统计效+ 1
            if (c >='A' && c <='Z' ){
                bigCount++;
            }else if (c >='a' && c <='z'){
                smallCount++;
            }else if (c >='0' && c <='9' ){
                numCount++;
            }
        }
        System.out.println("大写字母的个数:"+bigCount+", 小写字母的个数:"+smallCount+", 数字的个数:"+numCount);
    }
}

案例二:手机号屏蔽

求:以字符串的形式从键盘接受-个手机号,将中间四位号码屏蔽
终效果为: 1561234
思路:
①键盘录入一个字符串,用Scanner实现
②截取字符串前三位
●String substring(int beginIndex, int endIndex) :从beginIndex索引位置开始截取,截取到endIndex索引位置,
得到新字符串并返回(包含头,不包含尾)
●Strings1 = telString.substring(0,3);
③截取字符串后四位
●String substring(int beginIndex):从传入的索引位置处,向后截取, 一直截取到末尾,得到新的字符串并返回
●String s2 = telString.substring(7);
④将截取后的两个字符串,中间加
进行拼接,输出结果

import java.util.Scanner;

public class Test4 {
    public static void main(String[] args) {
        /**
         * 需求:以宇符串的形式从键盘接受- -个手机号,将中间四位号码屏蔽
         * 最终效果为: 156****1234
         * 思路:
         * 1.键盘录入一个字符串,用Scanner实现
         * 2.截取字符串前三位
         * 3.截取字符串后四位
         * 4.将截取后的两个字符串,中间加上****进行拼接,输出结果
         */
        //1.键盘录入-一个字符串,用Scanner实现
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入手机号:");
        String s = sc.nextLine();
        
        //2.截取字符串前三位
        String start = s.substring(0, 3);

        // 3.截取字符串后四位
        String end = s.substring(7);

        //4.将截取后的两个字符串,中间加上****进行拼接,输出结果
        System.out.println(start+"****"+end);
    }
}

案例三:敏感词替换

需求:键盘录入一个字符串,如果字符串中包含(TMD) ,则使用**替换
思路:
①键盘录入一个字符串,用Scanner实现
②替换敏感词
●String replace(CharSequence target, CharSequence replacement)
将当前字符串中的target (被替换的旧值)内容,使用replacement (替换的新值)进行替换,返回新的字符串
③输出结果

import java.util.Scanner;

public class Test5 {
    public static void main(String[] args) {
        /**
         * 需求:經盘录入一个宇符串,如果宇符串中包含(TMD ) ,则使用**替换
         * 思路:
         *      1.健盘录入一个字符串,用Scanner实现
         *      2.昔换敏感词
         *      String replace(CharSequence target, CharSequence replacement)
         *      舟当前字符串中的target内容,使replacement进行替换,返回新的字符串
         *      3.输出結果
         */
        // 1.键盘录入-一个字符串,用Scanner实现
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入:");
        String s = sc.nextLine();

        // 2.昔换敏感词
        String replace = s.replace("TMD", "***");

        //  3.输出結果
        System.out.println(replace);
    }
}

案例四:字符串的切割

需求:以宇符串的形式从健盘录入学生信息,例如:“张三,23”
从该字符申中切割出有效数据,封装为Student学生对象
思路:

1.编写Student类,用于封装数据

2.鍵盘录入一个宇符申,用Scanner 实现

3…根据逗号切割字符串, 得到(张三) (23 )

String[] split(String regex) : 根据传入的字符串作为规则进行切割,将切剖后的内容存入宇符申数組中,并将宇符申数組返回

4.从得到的字符申数组中取出元素内容,通过s tudent类的有参构造方法封装为对象

5.调用对象getXxx方法 ,取出数据并打印。

// 1.编写Student类,用于封装数据
public class Student {
    private String name;
    private String age;

    public Student(String name, String age) {
        this.name = name;
        this.age = age;
    }

    public Student() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }
}


import java.util.Scanner;

public class text6 {
    public static void main(String[] args) {
        /**
         * 需求:以宇符串的形式从健盘录入学生信息,例如:“张三,23”
         * 从该字符申中切割出有效数据,封装为Student学生对象
         * 思路:
         *      1.编写Student类,用于封装数据
         *      2.鍵盘录入一个宇符申,用Scanner 实现
         *      3..根据逗号切割字符串, 得到(张三) (23 )
         *      String[] split(String regex) : 根据传入的字符串作为规则进行切割,将切剖后的内容存入宇符申数組中,并将宇符申数組返回
         *      4.从得到的字符申数组中取出元素内容,通过s tudent类的有参构造方法封装为对象
         *      5.调用对象getXxx方法 ,取出数据并打印。
         */

        //2.鍵盘录入一个宇符申,用Scanner 实现
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入学生信息:例如:张三,23");
        String s = sc.nextLine();
        //3..根据逗号切割字符串, 得到(张三) (23 )
        String[] split = s.split(",");
        // 4.从得到的字符申数组中取出元素内容,通过s tudent类的有参构造方法封装为对象
        Student student = new Student(split[0], split[1]);
        System.out.println(student.getName()+"...."+student.getAge());
    }
}

五、StringBuilder

1、StringBuilder概述

StringBuilder 是一个可变的字符串类,我们可以把它看成是一个容器,这里的可变指的是StringBuilder 对象中的内容是可变的

:

  • 作用:提高字符串的操作效率
// 分别用string,Stringbuilder做100000次的拼接,比较耗时长短
public class Demo {
    public static void main(String[] args) {
        stringMethod(); //耗时 21407
        stringBuilderMethod(); //耗时: 21

    }

    public static void stringBuilderMethod() {
        long start = System.currentTimeMillis();
        StringBuilder s = new StringBuilder();
        for (int i = 0; i < 100000; i++) {
            s.append(i);
        }
        System.out.println(s);
        long end = System.currentTimeMillis();
        System.out.println(end-start);
    }

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

2.构造方法
StringBuilder() 构造一个不带任何字符的字符串生成器,其初始容量为 16 个字符。

StringBuilder(String str) 构造一个字符串生成器,并初始化为指定的字符串内容。
3.StringBuilder类常用方法
public StringBuilder append(任意类型)  			添加数据,并返回对象本身

public StringBuilder reverse()				   返回相反的字符序列

public int length()        					   返回长度(字符出现的个数)

public String toString()        通过toString方法就可以实现吧StringBuilder转换为‘String对象
4.StringBuilder类和String类的各自的特点
1、String进行字符串拼接的特点:
	由于字符串的不可变性,所以每次拼接,都会产生新的字符串对象。
	这种拼接这样既耗时,又浪费内存空间,需要使用StringBuilder进行改进。
	  
2、StringBuilder的特点:
	StringBuilder是一个可变的字符串容器。
	StringBuilder可以解决字符串拼接时产生很多中间对象的问题,提高字符串拼接的效率。
	
3.StringBuilder类和String类的区别:
	String类:内容是不可变的
	StringBuilder类:内容是可变的
	

六、Object类介绍

  • java.lang.Object 注意:lang包中的类无需导包可以直接使用
  • Object类 是类层次结构的根类(最顶层的类 祖宗类)。
  • 每个类都使用 Object 作为超类。任何一个类都直接或者间接的继承了Object类
  • 所有对象(包括数组)都实现这个Object类的方法。任何一个类都可以使用Object类中的方法
1.Object 类的常用方法
(1)Object类的toString方法
/*
    Object类的常用方法:
        String toString() 返回该对象的字符串表示。
    Object类toString方法的底层源码(了解)
        public String toString() {
            return getClass().getName() + "@" + Integer.toHexString(hashCode());
        }
        1.getClass().getName():使用反射技术获取类的全类名(包名+类名)
             com.itheima.demo01toString.Person
        2."@":字符串的@符号,原样输出,起到分割作用
        3.hashCode():Object类中的方法,可以获取对象的哈希值,哈希值是操作系统随机给出一个十进制的整数
        4.Integer.toHexString(十进制的整数): 把十进制的整数转换为十六进制 0-9 a-f
        组合在一起:com.itheima.demo01toString.Person@AC123(对象在堆内存中的地址值)
 */
public class Demo01ToString {
    public static void main(String[] args) {
        Person p = new Person("迪丽热巴",18);
        //Person类默认继承了Object类,所以可以使用Object类的toString方法
        String s = p.toString();
        System.out.println(s);//com.itheima.demo01toString.Person@4554617c 重写toString Person{name=迪丽热巴, age=18}

        //直接打印对象的名字,会默认调用对象的toString方法
        System.out.println(p);//com.itheima.demo01toString.Person@4554617c 重写toString Person{name=迪丽热巴, age=18}
    }
}
//ctrl+鼠标左键:进入类中或者方法
public class Person extends Object{
    private String name;
    private int age;

    /*
        Object类的toString方法,默认打印对象的地址值没有意义
        需要重写toString方法,打印对象的属性值(成员变量:name,age)
     */
    /*@Override
    public String toString() {
       return "Person{name="+name+", age="+age+"}";
    }*/

    //重点:会使用快捷键,重写toString方法  alt+insert==>toString方法
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

重点记忆

1.直接打印对象的名字,会默认调用对象的toString方法

2.Object类的toString方法,默认打印对象的地址值

3.重写toString方法快捷键 alt+insert==>toString方法

(2)Object类中的equals方法
/*
    Object类的中equals方法:
        boolean equals(Object obj) 指示其他某个对象是否与此对象“相等”。
    Object类中的equals方法的源码:
        public boolean equals(Object obj) {
            return (this == obj);
        }
        ==:比较运算符
            基本数据类型:比较的值是否相同  10==20
            引用数据类型(数组,ArrayList集合,类Person,Student...):比较的是地址值是否相等  @AC123==@43DFA
 */
public class Demo01Equals {
    public static void main(String[] args) {
        //创建两个Person对象
        Person p1 = new Person("詹姆斯",35);
        Person p2 = new Person("韦德",38);
        //使用Object类的toString打印对象的地址值
        System.out.println(p1);//com.itheima.demo02equals.Person@4554617c
        System.out.println(p2);//com.itheima.demo02equals.Person@74a14482
        //使用Object类的equals方法,比较两个对象的地址值
        boolean b = p1.equals(p2);
        System.out.println(b);//false

        //把p2的地址值赋值给p1
        p1=p2;
        //使用Object类的toString打印对象的地址值
        System.out.println(p1);//com.itheima.demo02equals.Person@74a14482
        System.out.println(p2);//com.itheima.demo02equals.Person@74a14482

        boolean b2 = p1.equals(p2);
        System.out.println(b2);//true
    }
}
//ctrl+鼠标左键:进入类中或者方法
public class Person extends Object{
    private String name;
    private int age;

    /*
        比较两个对象的地址值没有意义,所以我们需要重写Object类的equals方法
        分别比较两个对象的的属性(name,age)
     */
    @Override
    public boolean equals(Object obj) {
        /*
            增加一个判断,如果obj就是this本身,那么就没有必要在强转之后进行比较了
            直接返回true,可以提高效率
         */
        if(obj == this){
            return true;
        }

        /*
            增加一个判断,如果obj是null,那么直接返回false,可以提高程序的效率
         */
        if(obj==null){
            return false;
        }

        /*
            ClassCastException: java.util.Random cannot be cast to com.itheima.demo02equals.Person
            为了防止类型转换异常,强转之前使用instanceof关键字进行判断
         */
        if(obj instanceof Person){
            //多态的弊端:无法使用子类特有的成员==>解决方案:向下转型
            Person p = (Person)obj;
            //比较两个对象this(p1)和p(obj=p2)的属性name和age
            //             詹姆斯.equals(韦德)           35   ==   38
            boolean b = this.name.equals(p.name) && this.age == p.age;
            return b;
        }
        //obj不是Person类型,直接返回false
        return false;
    }

    //重点:快捷键添加equals方法  alt+insert equals() and hashCode()
    /*@Override
    public boolean equals(Object o) {
        if (this == o){
            return true;
        }
        //getClass() != o.getClass() 使用反射技术判断对象的类型==>相当于 obj instanceof Person
        if (o == null || getClass() != o.getClass()) {
            return false;
        }

        Person person = (Person) o;

        if (age != person.age) {
            return false;
        }
        //使用三元运算符的目的:防止空指针异常
        return this.name != null ? this.name.equals(person.name) : person.name == null;
    }*/

    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
2.native本地方法

native修饰的方法:说明这个方法不是java语言编写的

调用的是其他语言编写的代码或者操作系统底层的代码,看不到具体的方法

Object:
public native int hashCode();
public final native Class<?> getClass();
3.Objects对象的工具类
package com.itheima.demo03Objects;

import java.util.Objects;

/*
    java.util.Objects类:操作对象的工具类,里边的方法都是静态的
    Objects类JDK1.7之后出现的
    Objects中的方法都是空指针安全的,都是防止空指针异常的
    注意:
        java提供的工具类中的方法都是静态的,可以通过类名.方法名(参数)直接使用
    Objects工具类中equals方法
        static boolean equals(Object a, Object b):判断两个对象是否相等,相等返回true,相等返回false
    Objects工具类中equals方法的底层源码
       public static boolean equals(Object a, Object b) {
            return (a == b) || (a != null && a.equals(b));
        }
 */
public class Demo01Objects {
    public static void main(String[] args) {
        String s1 = null;
        String s2 = "abc";
        //使用String类的equals方法,比较两个字符串的内容是否相同
        //boolean b1 = s1.equals(s2);// s1=null  null.equals(s2) null是不能调用方法的,会抛出NullPointerException:空指针异常
        //System.out.println(b1);

        boolean b1= s1 != null ? s1.equals(s2) : s2 == null;
        System.out.println(b1);

        //Objects工具类中equals方法,可以防止空指针异常
        boolean b2 = Objects.equals(s1, s2);
        System.out.println(b2);
    }
}

七、Math 类

1.Math 类概述
  • Math是数学工具类,包含执行数学运算的各种方法。
  • Math类的构造方法是私有的,无法创建对象,通过类名即可调用方法。
2.常用的方法
方法名说明
public static int abs(int a)返回参数的绝对值
public static double ceil(double a)向上取整
public static double floor(double a)向下取整
public static int round(float a)四舍五入
public static double pow(double a,double b)返回a的b次幂的值

八、System类

1.System的概述
  • System位于java.lang包下,代表当前Java程序的运行平台。
  • System类中提供了大量静态方法,可以获取与系统相关的信息或执行系统级操作。
2.System 类的常用方法
方法名说明
public static void exit(int status)终止当前运行的 Java 虚拟机,非零表示异常终止
public static long currentTimeMillis()返回当前时间(以毫秒为单位)
arraycopy(数据源数组, 起始索引, 目的地数组, 起始索引, 拷贝个数)数组拷贝

九、BigDecimal类

1.BigDecimal类的概述

​ 因为计算机无法精确表示浮点数,所以在进行数字运算时,如果有double或float类型的浮点数参与计算,容易出现计算不准确的情况。

  在一些对精度要求很高的系统中,需要使用 java.math.BigDecimal 类来解决数学运算的精度问题。
2.BigDecimal 类的构造方法
构造方法说明
BigDecimal(double val)参数为double(不推荐)
BigDecimal(String val)参数为String(推荐使用)
3.BigDecimal 类的常用方法
方法名说明
public BigDecimal add(另一个BigDecimal对象)加法
public BigDecimal subtract (另一个BigDecimal对象)减法
public BigDecimal multiply (另一个BigDecimal对象)乘法
ublic BigDecimal divide (另一个BigDecimal对象)除法(除得尽的情况)
public BigDecimal divide (另一个BigDecimal对象,保留位数,舍入模式)除法(除不尽的情况)

注:舍入模式通常使用 RoundingMode.HALF_UP ,表示四舍五入

十、Date类

1.Date类概述

java.util.Date 代表了一个特定的时间,精确到毫秒。

2.构造方法
方法名说明
public Date()创建Date对象,代表当前系统的当前时间。
public Date(long date)使用毫秒数创建Date对象(在1970年1月1日 00:00:00 GMT 基础上加上指定毫秒数)
3.常用方法
方法名说明
public long getTime()返回当前时间的毫秒值。(自1970年1月1日 00:00:00开始)
public void setTime(long time)设置时间(在1970年1月1日 00:00:00基础上增加设置的毫秒值)
4.计算机中的时间原点

计算机中的起始时间:

​ 1970年1月1日 00:00:00

原因:
1969年8月,贝尔实验室的程序员 肯汤普逊(Ken Thompson)利用妻儿离开一个月的机会,开始着手创造一个全新的革命性的操作系统,他使用B编译语言在老旧的PDP-7机器上开发出了Unix的一个版本。
随后,汤普逊和同事 丹尼斯里奇(Dennis Ritchie)改进了B语言,开发出了C语言,重写了UNIX。
1970年1月1日 算C语言的生日

十一、SimpleDateFormat 类

1.SimpleDateFormat 类概述

ava.text.SimpleDateFormat 类可以实现日期格式化(日期–>文本)和解析(文本–>日期)。

2.SimpleDateFormat 的构造方法
方法名说明
public SimpleDateFormat()构造一个SimpleDateFormat,使用默认格式
public SimpleDateFormat(String pattern)构造一个SimpleDateFormat,使用指定的格式
3.SimpleDateFormat 格式化和解析日期

(1)日期格式化(从 Date 到 String )

public final String format(Date date):将日期格式化成特定格式的字符串。

(2)解析(从 String 到 Date )

public Date parse(String source):将字符串解析成日期对象。

4.日期模板中字母含义
字母含义
y年份,一般用 yy 表示2位年份,yyyy 表示 4 位年份
M月份,一般用 MM 表示
d天数,一般用 dd 表示
H小时(0~23),一般用 HH 表示
m分钟,一般使用 mm 表示 minute
s秒数,一般使用 ss 表示 second
h小时(1~12),一般使用 hh 表示
S毫秒,一般使用 SSS 表示
E星期,用 E 表示,会根据语言环境的不同, 显示不同语言的星期几
a上午/下午,用 a 表示,会根据不同语言环境显示 。

十二、Calendar类

1.Calendar类概述

java.util.Calendar是日历类。

Date类中很多方法都过时了,而Calendar类的功能比Date强大很多,所以Java官方推荐使用Calendar来替换Date的使用。

2.Calendar类创建对象

Calender是一个抽象类,不能直接创建对象,需要通过静态的 getInstance() 方法创建子类对象。

方法说明
static Calendar getInstance()获取当前时间的日历对象。
3.Calendar类常用方法
方法说明
get(int field)返回指定日历字段的值。
set(int field, int value)设置指定日历字段的值。
add(int field, int amount)添加或减去某个日历字段的值。
getTime()获取Date对象。
getTimeInMillies()返回该日历时间的毫秒值。
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐