1. 程式人生 > 實用技巧 >Object類&Date類&Calender類&StringBuilder類

Object類&Date類&Calender類&StringBuilder類

練習一:Objectequals方法

一、簡述String類中的equals方法與Object類中的equals方法的不同點。

答:String類中的equals方法是用來判斷兩個物件的內容是否相同,而Object 類中的equals方法是用來判斷兩個物件是否是同一個物件,所謂同一個物件指的是記憶體中的同一塊儲存空間。

練習二:Object類的toString方法

二、不執行程式碼,直接說出列印結果,並解釋原因。

public class ToStringTest{
    static int i = 1;
    public static void main(String args[]){
        System.out.println("love " + new ToStringTest());//love java
        ToStringTest a = new ToStringTest();
        a.i++;
        System.out.println("me " + a.i);//me 2
    }
    public String toString(){
        System.out.print("I ");//I
        return "java ";
    }
}

執行結果:I love java    me 2

  

原因:當執行程式碼的時候,首先載入靜態變數,然後執行main方法,由於main方法內部第一行程式碼為輸出語句,裡面new了此類物件,當執行此行程式碼時會先建立了本類的物件,由於此類重寫了toString方法會先執行toString方法的列印輸出,然後返回“java ”,再執行main方法第一行列印輸出。在Java“System.out.println(類物件名);”實際輸出的是該物件的toString()方法返回的字串,即括號中的內容等價於類物件名.toString(),toString方法的好處是在碰到println方法的時候會被自動呼叫,不用顯示的寫出來。

練習三:Objectequals方法

三、看下列程式,不執行說結果,寫出答案後,並在IntelliJ IDEA中執行看看自己給的答案與執行結果是否正確,並分析原因。

public class ToStringTest{
    static int i = 1;
    public static void main(String args[]){
        System.out.println("love " + new ToStringTest());//love java
        ToStringTest a = new ToStringTest();
        a.i++;
        System.out.println("me " + a.i);//me 2
    }
    public String toString(){
        System.out.print("I ");//I
        return "java ";
    }
}

執行結果:I love java    me 2

  

練習四:StringBuilder類與String類的區別

四、簡述StringBuilder類與String類的區別。

答:String類的物件內容不可改變,所以每當進行字串拼接時,總是會在記憶體中建立一個新的物件,所以經常改變內容的字串最好不要用String,因為每次生成物件都會對系統性能產生影響。

StringBuilder又稱為可變字元序列,是JDK5.0中新增加的一個類,它是一個類似於String的字串緩衝區,通過某些方法呼叫可以改變該序列的長度和內容。即它是一個容器,容器中可以裝很多字串,並且能夠對其中的字串進行各種操作。它的內部擁有一個數組用來存放字串內容,進行字串拼接時,直接在陣列中加入新內容,StringBuilder會自動維護陣列的擴容。

練習五:Date類的使用

五、請用程式碼實現:獲取當前的日期,並把這個日期轉換為指定格式的字串,2088-08-08 08:08:08

public class DateTest {
    public static void main(String[] args) {
        //獲取當前日期物件 now;
        Date now = new Date();
        //建立SimpleDateFormat物件 df,並制定日期格式
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //呼叫df的format(Date  date) 方法,傳入now; 接收返回的字串
        String datestr = df.format(now);
        //列印這個字串
        System.out.println(datestr);
    }
}

  

練習六:DateFormat類方法的使用

六、使用SimpleDateFormat,2018-03-04轉換為20180304日。

public class DateFormatTest {
    public static void main(String[] args) throws ParseException {
        //建立SimpleDateFormat物件df1,指定日期模式為yyyy-MM-dd
        SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd");
        //呼叫df1的parse(String str)方法傳入2018-03-04,得到對應日期型別
        Date date = df1.parse("2018-03-04");
        //建立日期格式化物件df2,在獲取格式化物件時可以指定風格
        DateFormat df2 = new SimpleDateFormat("yyyy年MM月dd日");
        //呼叫df2的format(Date date) 傳入剛才轉換的日期
        String str = df2.format(date);
        System.out.println(str);
    }
}

  

練習七:Calendar類方法的使用

七、用程式判斷2018214日是星期幾

public class CalendarTest01 {
    public static void main(String[] args) {
        //建立Calendar物件
        Calendar c = Calendar.getInstance();
        //將給定的日曆欄位設定到Calendar物件中
        c.set(Calendar.YEAR, 2018);
        c.set(Calendar.MONTH, 1);
        c.set(Calendar.DATE, 14);
        //設定年
        int year = c.get(Calendar.YEAR);
        //設定月
        int month = c.get(Calendar.MONTH)+1;
        //設定日
        int date = c.get(Calendar.DATE);
        //設定星期
        char week = getWeek(c.get(Calendar.DAY_OF_WEEK));
        //輸出結果
        System.out.println(year+"年"+month+"月"+date+"日是星期"+week);
    }
    //定義方法,獲取星期漢字
    public static char getWeek(int a){
        char[] c = {' ','日','一','二','三','四','五','六'};
        return c[a];
    }
}