之前將Java的大部分語法都回顧完了限寞,后面添加一些常見的操作仰坦,基礎(chǔ)語法就結(jié)束了悄晃。至于在這里再次提到常用類是由于有一部分體現(xiàn)在使用它的繼承類或者接口之類的传泊。這些需要有面向?qū)ο缶幊痰幕A(chǔ)
Object類
Object類是所有類的基類,只要定義了類拦盹,即使沒有顯式的聲明繼承自O(shè)bject類普舆,也會從該類繼承沼侣。這個類沒有什么是需要顯式調(diào)用的歉秫,很多東西都需要重寫類的方法來達到相關(guān)效果轧膘,比如常用的兩個方法:
-
String toString()
: 將類轉(zhuǎn)化為字符串。一般來說直接打印新定義的類都會打印出對象的地址值谎碍,如果需要打印里面的相關(guān)值蟆淀,需要重寫toString方法 -
boolean equals(Object obj)
: 一般來說澡匪,==
比較的是對象的地址值仙蛉,而針對字符串或者其他對象可能需要根據(jù)別的值來比較是否相等荠瘪,這個時候需要重寫這個方法哀墓。 -
protected Object clone()
: 在C++中如果直接使用內(nèi)存拷貝來拷貝對象的話篮绰,如果對象中有指針變量,可能會導致一系列的問題勉抓,這種拷貝方法叫做淺拷貝藕筋。這個方法用來執(zhí)行深度拷貝操作隐圾。
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
上述代碼是Object類的 toString
方法暇藏,從代碼上看盐碱,默認會調(diào)用對象的hashCode 方法獲取hash值甸各,并轉(zhuǎn)化為字符串趣倾。
時間操作
Date 類
Date 類用來處理時間儒恋,它能精確到毫秒
-
Date()
: 獲取當前時刻的Unix時間戳 -
Date(long date)
: 根據(jù)一個時間戳初始化一個對象 -
long getTime()
: 獲取當前對象對應(yīng)的時間戳
這個方法目前只是用來進行這些操作诫尽,后續(xù)其他時間的格式化炬守,獲取對應(yīng)的年牧嫉、月、日操作在后續(xù)的JDK版本都用另外的類來進行
SimpleDateFormat 類
上面提到减途,Date類只用來進行時間戳相關(guān)轉(zhuǎn)化的操作酣藻,而具體與時間相關(guān)的操作都用這個類來進行。該類繼承自 DataFormat
類鳍置, DataFormat
是一個抽象類辽剧。
-
SimpleDateFormat()
: 使用默認的模式來格式化Date類 -
SimpleDateFormat(String pattern)
: 按照指定格式來格式化Date類 -
SimpleDateFormat(String pattern, Locale locale)
: 構(gòu)造一個 SimpleDateFormat使用給定的模式和給定的區(qū)域設(shè)置的默認日期格式符號
模式類似于格式化字符串,與常見語言的格式化時間的方式類似税产。
-
String format(Date date)
: 按照構(gòu)造時提供的模式來將傳入的date 對象格式化為字符串 -
Date parse(String source)
: 從給定字符串的開始解析文本以生成日期
Calendar 類
上述兩個與時間相關(guān)的類已經(jīng)解決了時間的獲取以及格式化輸出的操作怕轿。但是關(guān)于時間還需要進行年偷崩、月、日相關(guān)的操作撞羽。比如加一年阐斜、減一個月等等。跟具體年月相關(guān)的操作使用 Calendar
類惕澎。這個類也是一個抽象類,但是可以使用它的相關(guān)靜態(tài)方法來創(chuàng)建對象
-
static Calendar getInstance()
: 使用默認時區(qū)和區(qū)域設(shè)置獲取日歷。 -
static Calendar getInstance(Locale aLocale)
: 使用默認時區(qū)和指定的區(qū)域設(shè)置獲取日歷。
常見的方法如下:
-
int get(int field)
: 返回指定字段的日歷值 -
void set(int year, int month, int date, int hourOfDay, int minute, int second)
: 設(shè)置字段中的值 YEAR , MONTH , DAY_OF_MONTH , HOUR_OF_DAY 孕惜, MINUTE和 SECOND -
abstract void add(int field, int amount)
: 根據(jù)日歷的規(guī)則碧磅,將指定的時間量添加或減去給定的日歷字段 -
Date getTime()
: 根據(jù)日歷對象返回一個對應(yīng)的Date類 -
void setTime(Date date)
: 將Date類轉(zhuǎn)化為日歷類
這些get和set方法有的需要一個值表示需要修改日歷中的哪個值。比如 YEAR表示年、MONTH表示月盗蟆、DAY_OF_MONTH表示月中的天數(shù)仆邓、HOUR_OF_DAY表示小時等等
從這3個類的相關(guān)操作來說,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));
System 類
這個類用于獲取系統(tǒng)相關(guān)的內(nèi)容休吠,里面都是一些靜態(tài)方法阳懂。常用的方法有:
-
static long currentTimeMillis()
: 返回當前系統(tǒng)時間号枕,以毫秒為單位 -
static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
: 數(shù)組復(fù)制方法
StringBuilder 類
我們說String方法中的字符不能修改,如果要修改,必須重新分配一個String,并舍棄原來的String方法。當String操作過多,頻繁的分配回收久信,影響程序效率管毙。StringBuilder類與String相比卓舵,可以修改里面的字符值。相比String來說效率更高
StringBuilder()
: 構(gòu)造一個能容納16個字符的字符容器StringBuilder(int capacity)
:構(gòu)造一個容納指定字符的容器StringBuilder(String str)
: 構(gòu)造一個初始化為指定字符串內(nèi)容的字符串構(gòu)建器尊浪。append方法
:它有一系列的重載方法。往字符容器中添加指定的內(nèi)容toString()
: 轉(zhuǎn)化為String 對象
包裝類
Java中針對 普通類型都有一個對應(yīng)的類嘱朽,封裝了一系列的操作奋刽,比如int 類的包裝類是 Integer, double 類的是 Double等等狭魂。
一般來說又兵,將對應(yīng)的基本類型轉(zhuǎn)化為包裝類的過程稱為裝箱;將包裝類轉(zhuǎn)化為基本類型的過程稱為拆箱企垦,從JDK1.5之后支持自動裝箱和自動拆箱,比如
Double d = 1.5;
int i = Integer(10);
int i1 = Integer("10");
<hr />