首頁  >  文章  >  Java  >  常用的Java API:Object類別、日期時間類別、StringBuilder類別、包裝類

常用的Java API:Object類別、日期時間類別、StringBuilder類別、包裝類

php是最好的语言
php是最好的语言原創
2018-08-02 11:44:461866瀏覽

本文介紹了幾個常用的JavaAPI,如Object類別、日期時間類、StringBuilder類別、包裝類,這些在以後開發中會常用到。

 Object類別

Java.lang.Object類別是Java語言中的根類,也就是所有類別的父類別。它所描述的所以方法子類別都可以使用。子啊物件實例化的時候,最後找的父類別就是Object.。

Object類別包含11個成員方法,我這只列舉兩個常用的方法:

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

1.toString方法

public String toString():傳回該物件的字串表示。

toString方法回傳該物件的字串表示,其實該字串內容就是物件的型別@ 記憶體位址值,由於toString方法回傳的結果是記憶體位址,而在開發中,常需要依照物件的屬性得到對應的字串表現形式,一般都會重寫它。

方法重寫:

    //重写toString方法
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

2.equals方法

public boolean equals(Object obj):指示其他某個物件是否與此對象「相等」。

呼叫成員方法equals並指定參數為另一個對象,則可以判斷這兩個物件是否是相同的。這裡的“相同”有預設和自訂兩種方式。

如果沒有覆寫重寫equals方法,那麼Object類別中預設進行==運算子的物件位址比較,只要不是同一個對象,結果必然為false。

方法重寫:

/*
        Object类的equals方法,默认比较的是两个对象的地址值
        重写equals方法,比较两个对象的属性
        问题:
            隐含这一个多态,无法使用子类特有的内容(属性和方法)
        解决:
            可以使用向下转型(强制类型转换)把o类型转换为Person
     */
    //重写equals方法
    @Override
    public boolean equals(Object o){
        //增加一个判断,如果传递的参数是this本身,直接返回true
        if(this==o) return true;

        //增加一个判断,如果传递的参数是null,直接返回false
        if(o==null) return  false;

        //增加一个判断,防止类型转换一次ClassCastException
        if(o instanceof Person){
            //使用向下转型,把o转换为Person类型
            Person p=(Person)o;
            //比较两个对象的属性,一个对象是this(p1),一个对象是p(o->p2)
            boolean b=this.name.equals(p.name) && this.age==p.age;
            return  b;
        }

        //不是Person类型,返回false
        return false;

日期時間類別

1.Date類別

java.util.Date 類別表示特定的瞬間,精確到毫秒。

常用方法:

public long getTime() 把日期对象转换成对应的时间毫秒值。

實例:

    /*
        long getTime() 把日期转换为毫秒值(相当于System.currentTimeMillis()方法)
        返回自1970年1月1日0点0分0秒 GMT以来此Date对象表示的毫秒数
     */
    public static void demo3(){
        Date date =new Date();
        long time=date.getTime();
        System.out.println(time);
    }

    //结果值
    1533119389083

2.DateFormat類別

java.text.DateFormat 是日期/時間格式化子類別的抽象類,我們透過這個類別可以幫我們完成日期和文字之間的轉換,也就是可以在Date物件與String物件之間進行來回轉換。

格式化:依照指定的格式,從Date物件轉換為String物件。

解析:依照指定的格式,從String物件轉換為Date物件。

常用兩個方法:

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

實例:

package demo2_Date;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Test02_Dateformat {
    public static void main(String[] args) throws ParseException {
        //将date对象格式化为字符串
        find_Date01();
        
        //将字符串解析为date对象
        find_Date02();
    }


    //将字符串解析为date对象
    public static void  find_Date01() throws ParseException {
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
        String str="2018年8月1日 7点12分23秒";
        Date s=sdf.parse(str);
        System.out.println(new Date());
    }

    //将date对象格式化为字符串
    public static void  find_Date02(){
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        String s=sdf.format(new Date());
        System.out.println(s);
    }
}

計算出生天數:

package demo2_Date;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

/*
    计算出生天数
        1.键盘录入出生日期,并转换date类型(毫秒值)
        2.获取当前日期毫秒值
        3.相减得到差值毫秒值,转换得到天数
 */
public class Test03_FindBirthday {
    public static void main(String[] args) throws ParseException {
        //录入出生日期
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入你的出生日期:格式(yyyy-MM-dd)");
        String bithDateString=sc.next();

        //使用DateFormat类中的parse方法,把字符串类型的出生日期,转换成为date类型
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
        Date birthDate=sdf.parse(bithDateString);

        //把出生日期转换为毫秒值
        long birthDateTime=birthDate.getTime();
        long nowDateTime=new Date().getTime();

        long daysTime=nowDateTime-birthDateTime;
        //获取天数
        System.out.println(daysTime/1000/60/60/24);
    }
}

輸出結果:

请输入你的出生日期:格式(yyyy-MM-dd)
1996-05-24
8104

Process finished with exit code 0

3. Calendar類別

概念:

java.util.Calendar是日曆類,在Date後出現,取代掉了許多Date的方法。此類別將所有可能用到的時間資訊封裝為靜態成員變量,方便取得。日曆類別就是方便取得各個時間屬性的。

取得方式:

Calendar為抽象類,透過靜態方法建立並傳回子類別物件:

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

常用方法:Calendar常用方法有四個,主要掌握get方法與getTime方法

- 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对象

實例:

package demo2_Date;
import java.util.Calendar;
import java.util.Date;

/*
    四种常用成员方法:
    - 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对象。
 */
public class Test04_Calendar {
    public static void main(String[] args) {
//        demo1();
//        demo2();
        demo3();
        demo4();
    }

    /*
    - public Date getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。
     */
    public static void demo4(){
        Calendar cal=Calendar.getInstance();
        Date date=cal.getTime();
        System.out.println(date);   //Wed Aug 01 19:20:51 CST 2018
    }


    /*
     public abstract void add(int field, int amount):根据日历的规则,
        为给定的日历字段添加或减去指定的时间量。
     参数:设定指定的日历字段以及修改量
     返回值:修改过后的日历字段代表的值
     */
    public static void demo3(){
        Calendar cal =Calendar.getInstance();

        //加两年,减两月
        cal.add(Calendar.YEAR,+2);
        cal.add(Calendar.MONTH,-2);

        int year =cal.get(Calendar.YEAR);
        int month=cal.get(Calendar.MONTH)+1;
        int day=cal.get(Calendar.DAY_OF_MONTH);
        System.out.println(year+"年"+month+"月"+day+"日");//   2020年6月1日
    }

    /*
     public void set(int field, int value):将给定的日历字段设置为给定值。
     参数:设定指定的日历字段以及设置值
     返回值:重新设定的日历字段代表的值
     */
    public static void demo2(){
        //创建Calendar对象
        Calendar cal= Calendar.getInstance();
        cal.set(Calendar.YEAR ,2020);
        int year=cal.get(Calendar.YEAR);
        System.out.println(year+"年");       //2020年
    }

    /*
        public int get(int field):返回给定日历字段的值。
        参数:传递指定的日历字段(YEAR,MONTH)
        返回值:日历字段代表的具体的值
     */
    public static void demo1(){
        //创建Calendar对象
        Calendar cal= Calendar.getInstance();
        //获取年份
        int year =cal.get(Calendar.YEAR);
        //获取月份
        int month=cal.get(Calendar.MONTH)+1;
        int day=cal.get(Calendar.DAY_OF_MONTH);
        System.out.println(year+"年"+month+"月"+day+"日"); //2018年8月1日
    }
}

System類別

1.currentTimeMillis方法

        返回毫秒為單位的目前時間,常用來測試程式碼效率,例如循環程式碼。

2.arraycopy方法

        將陣列中指定的資料拷貝到另一個陣列中。

實例:

package demo3_System;

import java.util.Arrays;

/*
    两个常用方法:
        1.currentTimeMillis
        2.arraycopy
 */
public class Test01_System {
    public static void main(String[] args) {
        demo1();
        demo2();
    }

    //将数组中指定的数据拷贝到另一个数组中。
    public static void demo2(){
        int[] arr1={1,2,3,4,5};
        int[] arr2={6,7,8,9,10};
        System.arraycopy(arr1,0,arr2,0,3);
        System.out.println(Arrays.toString(arr2));      //[1, 2, 3, 9, 10]
    }

    //返回以毫秒为单位的时间
    public static void demo1(){
        long begin=System.currentTimeMillis();
        int sum=0;
        for(int i=0;i<10000;i++){
            System.out.println(i);
        }
        long end=System.currentTimeMillis();
        System.out.println(end-begin);  //205毫秒
    }

StringBuilder類別

1.概述

        StringBuilder又稱為可變字元序列,它是類似String 的字串緩衝區,透過某些方法呼叫可以改變該序列的長度和內容。原來StringBuilder是字串的緩衝區,即它是一個容器,容器中可以裝很多字串。並且能夠對其中的字串進行各種操作。它的內部擁有一個陣列用來存放字串內容,進行字串拼接時,直接在陣列中加入新內容。 StringBuilder會自動維護陣列的擴容。原理如下圖所示:(預設16字元空間,超過自動擴充)

2.常用方法:

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

 3.實例:

package demo4_StringBufilder;

public class Test01_StringBuilder {
    public static void main(String[] args) {
//        demo1();
        demo2();
    }

    //通过toString方法,StringBuilder对象将会转换为不可变的String对象
    public static void  demo2(){
        //创建对象
        StringBuilder str=new StringBuilder("会发光").append("的小太阳");
        //调用方法
        String atr1=str.toString();
        System.out.println(atr1);   //会发光的小太阳
    }

    //StringBuilder类的append方法,返回值是一个StringBuilder对象
    public static void demo1(){
        //创建对象
        StringBuilder str=new StringBuilder();
        //返回的是一个StringBuilder对象
        StringBuilder str2= str.append("会发光的");
        str2.append("小太阳");
        System.out.println("str2: "+str2);      //str2: 会发光的小太阳

        //调用一个方法返回值是一个对象的时候,可以使用返回值对象继续调用方法
        //链式编程
        str2.append("会吸光").append("小月亮");
        System.out.println("str2==: "+str2);    //str2==: 会发光的小太阳会吸光小月亮
    }
}

包裝類別

1.基本型別與對應的包裝類別

基本型別--包裝類別
#基本型別 對應包裝類(位於java.lang套件下)
byte Byte
short Short
int Integer
#long Long
float Float
double Double
chart Charter
boolean Boolean
#

2.拆箱與裝箱

基本型別與對應的包裝類別物件之間,來回轉換的過程稱為」裝箱「與」拆箱「:

#裝箱:從基本型別轉換為對應的包裝類別物件。

拆箱:從包裝類別物件轉換為對應的基本型別。

3.自動拆箱與自動裝箱

由於我們經常要做基本型別與包裝類別之間的轉換,從Java 5(JDK 1.5)開始,基本型別與包裝類的裝箱、拆箱動作可以自動完成,就是不需要我們來操作了。沒錯,這就是自動裝箱與自動箱,驚不驚喜,意不出意外。

相關文章:

Java中的常用日期類說明

#Java中日期類,日曆類的使用

【java教學】Java StringBuffer和StringBuilder類別

以上是常用的Java API:Object類別、日期時間類別、StringBuilder類別、包裝類的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn