==和equals方法的區別

megan...發表於2020-10-18
        面試題:==和equals方法的區別
            ==既可以比較基本資料型別資料,也可以比較引用型別資料,比較基本資料型別資料比較的是值是否相等,比較引用資料型別資料
            比較的是地址值是否相等

            equals是一個方法,它只能比較引用型別資料,不能比較基本型別資料,比較引用型別資料有可能比較的是地址值,也有可能比較的是內容
            到底比較的是地址值還是內容,就看equals方法是否重寫過,如果沒有重寫則使用的是Object類繼承下來的equals方法,比較的是地址值

Object
是所有類的直接或者間接父類(基類、超類),所有的類都能繼承Object類中的方法。

常用方法
    public boolean equals(Object obj):比較兩個物件是否相等
        如果使用的是Object類中繼承下來的equals()方法,這時比較的是地址值

        原始碼:
            public boolean equals(Object obj) {
                return (this == obj);
            }

        但是一般比較地址值沒有必要去使用equals,我可以直接使用==進行比較,所以一般會對equals方法進行重寫,重寫之後的比較
        的是物件中的內容(成員變數),JDK提供的類90%以上都重寫過這個方法了,比如:String類等

        如何重寫?
            快捷鍵生成,alt+insert 選擇hashCode&equals



            如果重寫過equals方法則比較的是內容,比如:String類

    public String toString():將物件轉為字串返回值

        原始碼:
            public String toString() {
                return getClass().getName() + "@" + Integer.toHexString(hashCode());
            }

            com.itcast.day03.test.Dog@1f8e15

        Object類中的toString方法返回的字串格式,一般意義不大,所以一般也會重寫該方法,JDK提供的類90%以上都重寫過這個方法了。
        重寫的原則是:返回值的是物件中的內容。

        如何重寫?
                快捷鍵生成,alt+insert,選擇toString

日期相關類
Date類將功能一拆為三,一般分保留在Date類中,另外一部分功能放到了SimpleDateFormat類中,還有一部分功能放到了Calendar類中。
Date類中原來其實包含了SimpleDateFormat和Calendar類的功能,這些功能拆分完之後都在Date類中都過時了。

Date
    表示任意時間,可以過去,現在和將來,到底是表示哪個時間,就看你傳遞的引數了。

    構造方法
        Date()
        Date(long mills)

    成員方法
        setTime(long mills)
        getTime()

        擴充套件
             boolean after(Date when)
                      測試此日期是否在指定日期之後。
             boolean before(Date when)
                      測試此日期是否在指定日期之前。


SimpleDateFormat
    日期格式化和解析類

    構造方法
        SimpleDateFormat(String pattern);

    常用方法
        格式化:將日期物件轉為指定格式的字串       Date -> String
            String format(Date d)

        解析:將日期字串轉為日期物件              String -> Date
            Date parse(String s)

            注意:
                傳遞的字串一定要是一個日期字串,比如:"hello"這樣的不行,"2020-10-20"類似這樣的可以
                傳遞的日期字串必須符合模式的要求,否則也會報錯


Calendar
    日曆類,是一個抽象類
    作用是將日期轉為單獨的年、月、日、時、分、秒進行操作

    獲取物件
        Calendar c = Calendar.getInstance();// 多型,獲取的其實是Calendar的子類物件

    操作
        獲取
            public int get(int field):field就是標記
        修改
             void set(int field, int value) :一次改一個欄位的值
                      將給定的日曆欄位設定為給定值。
             void set(int year, int month, int date) :一次性改年、月、日
                      設定日曆欄位 YEAR、MONTH 和 DAY_OF_MONTH 的值。
             void set(int year, int month, int date, int hourOfDay, int minute)
                      設定日曆欄位 YEAR、MONTH、DAY_OF_MONTH、HOUR_OF_DAY 和 MINUTE 的值。
             void set(int year, int month, int date, int hourOfDay, int minute, int second)
                      設定欄位 YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE 和 SECOND 的值。

        增減
             void add(int field, int amount)


        擴充套件
            轉換
                 void setTime(Date date) :將Calendar所表示的時間設定為Date的時間  Date -> Calendar
                 Date getTime() :將Calendar所表示的時間獲取出來設定到Date中        Calendar -> Date

Math
數學相關的類,該類是工具類,所有的方法通過類名.呼叫。

工具類的特點:
    1、構造方法私有化
    2、其中的方法都是靜態方法

    static double abs(double a):取絕對值
    static double ceil(double a):向上取整
    static double floor(double a):向下取整
    static double max(double a, double b):兩數較大值
    static double min(double a, double b):兩數較小值
    static double pow(double a, double b):a的b次方
    static long round(double a)  :四捨五入

System
static void exit(int status):退出JVM,傳遞0代表正常退出,非0異常退出
static long currentTimeMillis():返回當前系統時間毫秒值
static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) :

相關文章