Object類&Date類&Calender類&StringBuilder類
練習一:Object類equals方法
一、簡述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方法的時候會被自動呼叫,不用顯示的寫出來。
練習三:Object類equals方法
三、看下列程式,不執行說結果,寫出答案後,並在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轉換為2018年03月04日。
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類方法的使用
七、用程式判斷2018年2月14日是星期幾。
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]; } }