以前將Java的大部分語法都回顧完了,後面添加一些常見的操做,基礎語法就結束了。至於在這裏再次提到經常使用類是因爲有一部分體如今使用它的繼承類或者接口之類的。這些須要有面向對象編程的基礎
java
Object類是全部類的基類,只要定義了類,即便沒有顯式的聲明繼承自Object類,也會從該類繼承。這個類沒有什麼是須要顯式調用的,不少東西都須要重寫類的方法來達到相關效果,好比經常使用的兩個方法:編程
String toString()
: 將類轉化爲字符串。通常來講直接打印新定義的類都會打印出對象的地址值,若是須要打印裏面的相關值,須要重寫toString方法boolean equals(Object obj)
: 通常來講,==
比較的是對象的地址值,而針對字符串或者其餘對象可能須要根據別的值來比較是否相等,這個時候須要重寫這個方法。protected Object clone()
: 在C++中若是直接使用內存拷貝來拷貝對象的話,若是對象中有指針變量,可能會致使一系列的問題,這種拷貝方法叫作淺拷貝。這個方法用來執行深度拷貝操做。public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }
上述代碼是Object類的 toString
方法,從代碼上看,默認會調用對象的hashCode 方法獲取hash值,並轉化爲字符串。數組
Date 類用來處理時間,它能精確到毫秒app
Date()
: 獲取當前時刻的Unix時間戳Date(long date)
: 根據一個時間戳初始化一個對象long getTime()
: 獲取當前對象對應的時間戳這個方法目前只是用來進行這些操做,後續其餘時間的格式化,獲取對應的年、月、日操做在後續的JDK版本都用另外的類來進行ui
上面提到,Date類只用來進行時間戳相關轉化的操做,而具體與時間相關的操做都用這個類來進行。該類繼承自 DataFormat
類, DataFormat
是一個抽象類。指針
SimpleDateFormat()
: 使用默認的模式來格式化Date類SimpleDateFormat(String pattern)
: 按照指定格式來格式化Date類SimpleDateFormat(String pattern, Locale locale)
: 構造一個 SimpleDateFormat使用給定的模式和給定的區域設置的默認日期格式符號模式相似於格式化字符串,與常見語言的格式化時間的方式相似。code
String format(Date date)
: 按照構造時提供的模式來將傳入的date 對象格式化爲字符串Date parse(String source)
: 從給定字符串的開始解析文本以生成日期上述兩個與時間相關的類已經解決了時間的獲取以及格式化輸出的操做。可是關於時間還須要進行年、月、日相關的操做。好比加一年、減一個月等等。跟具體年月相關的操做使用 Calendar
類。這個類也是一個抽象類,可是可使用它的相關靜態方法來建立對象orm
static Calendar getInstance()
: 使用默認時區和區域設置獲取日曆。static Calendar getInstance(Locale aLocale)
: 使用默認時區和指定的區域設置獲取日曆。常見的方法以下:對象
int get(int field)
: 返回指定字段的日曆值void set(int year, int month, int date, int hourOfDay, int minute, int second)
: 設置字段中的值 YEAR , MONTH , DAY_OF_MONTH , HOUR_OF_DAY , MINUTE和 SECONDabstract void add(int field, int amount)
: 根據日曆的規則,將指定的時間量添加或減去給定的日曆字段Date getTime()
: 根據日曆對象返回一個對應的Date類void setTime(Date date)
: 將Date類轉化爲日曆類這些get和set方法有的須要一個值表示須要修改日曆中的哪一個值。好比 YEAR表示年、MONTH表示月、DAY_OF_MONTH表示月中的天數、HOUR_OF_DAY表示小時等等繼承
從這3個類的相關操做來講,Date類做爲溝通其餘兩個類的橋樑,常見的策略是: DateFormat -->Date -->Calender 或者 Calender-->Date-->DateFormat
下面是一個簡單的例子
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = df.parse("2018-10-1 12:12:12"); Calendar c = Calendar.getInstance(); c.set(Calendar.YEAR, 2019); date = c.getTime(); System.out.println("Time:" + df.format(date));
這個類用於獲取系統相關的內容,裏面都是一些靜態方法。經常使用的方法有:
static long currentTimeMillis()
: 返回當前系統時間,以毫秒爲單位static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
: 數組複製方法咱們說String方法中的字符不能修改,若是要修改,必須從新分配一個String,並捨棄原來的String方法。當String操做過多,頻繁的分配回收,影響程序效率。StringBuilder類與String相比,能夠修改裏面的字符值。相比String來講效率更高
StringBuilder()
: 構造一個能容納16個字符的字符容器StringBuilder(int capacity)
:構造一個容納指定字符的容器StringBuilder(String str)
: 構造一個初始化爲指定字符串內容的字符串構建器。
append方法
:它有一系列的重載方法。往字符容器中添加指定的內容
toString()
: 轉化爲String 對象
Java中針對 普通類型都有一個對應的類,封裝了一系列的操做,好比int 類的包裝類是 Integer, double 類的是 Double等等。
通常來講,將對應的基本類型轉化爲包裝類的過程稱爲裝箱;將包裝類轉化爲基本類型的過程稱爲拆箱,從JDK1.5以後支持自動裝箱和自動拆箱,好比
Double d = 1.5; int i = Integer(10); int i1 = Integer("10");