1.四類八種-基本類型
整數(shù)類型
byte屁桑,short医寿,int(默認),long
小數(shù)類型
float蘑斧,double(默認)
字符類型
char
布爾類型
oolean
2.引用類型
類靖秩,接口,數(shù)組類型竖瘾,枚舉類型沟突,注解類型
3.基本類型和引用類型的區(qū)別
基本類型在被創(chuàng)建時,在棧上給其劃分一塊內(nèi)存捕传,將數(shù)值直接存儲在棧上惠拭。
引用類型在被創(chuàng)建時,首先在棧上給其引用(句柄)分配一塊內(nèi)存庸论,而對象的具體信息都存儲在對內(nèi)存上职辅,然后由棧上面的引用指向堆中對象的地址。
4.Object類
Object是所有類的父類葡公。所有類都直接或者間接的繼承自O(shè)bject
重寫Object類的toString方法
public String toString() :返回該對象的字符串表示罐农。
toString可以將對象轉(zhuǎn)成一個字符串。
當(dāng)通過一個對象調(diào)用toString方法時催什,先會看一下自己有沒有這個方法涵亏,如果自己沒有,那么就會向上找父類蒲凶,一直到Object气筋。
當(dāng)我們直接輸出一個對象名時,內(nèi)部會調(diào)用這個對象的toString方法旋圆,這個對象的toString方法內(nèi)容是什么宠默,那么直接輸出這個對象名的結(jié)果就是什么。
一般來說灵巧,輸出地址值沒有什么意義搀矫,如果想要調(diào)用toString方法后得到我們想要的內(nèi)容,比如對象的屬性刻肄,那么我們可以在子類中重寫toString瓤球。(Object中的toString方法是將對象轉(zhuǎn)換成地址值的字符串。)
重寫Object類的equals方法
equals方法可以比較兩個對象的內(nèi)容是否相同敏弃。
boolean equals(Object obj): 比較兩個對象是否相同卦羡。
默認地址比較
如果沒有覆蓋重寫equals方法,那么Object類中默認進行 == 運算符的對象地址比較,只要不是同一個對象绿饵,結(jié)果必然為false欠肾。
對象內(nèi)容比較
如果希望進行對象的內(nèi)容比較,即所有或指定的部分成員變量相同就判定兩個對象相同拟赊,則可以覆蓋重寫equals方法刺桃。
簡述String類中的equals方法與Object類中的equals方法的不同點。
String類中的equals方法是用來判斷兩個對象的內(nèi)容是否相同要门,而Object 類中的equals方法是用來判斷兩個對象是否是同一個對象虏肾,所謂同一個對象指的是內(nèi)存中的同一塊存儲空間。
5.Date類
能夠使用日期類輸出當(dāng)前日期
public Date() :分配Date對象并初始化此對象欢搜,以表示分配它的時間(精確到毫秒)封豪。
public Date(long date) :分配Date對象并初始化此對象,以表示自從標(biāo)準(zhǔn)基準(zhǔn)時間(稱為“歷元(epoch)”炒瘟,即1970年1月1日00:00:00 GMT)以來的指定毫秒數(shù)吹埠。
public long getTime() 把日期對象轉(zhuǎn)換成對應(yīng)的時間毫秒值。
1.能夠使用將字符串轉(zhuǎn)換成日期的方法
Date parse(String source):將字符串轉(zhuǎn)成(解析)一個Date對象并返回
調(diào)用SimpleDateFormat的parse方法
解析的步驟:
\1. 創(chuàng)建一個字符串疮装,表示時間缘琅。
String str = "2018年12月11日";
\2. 創(chuàng)建一個SimpleDateFormat對象,參數(shù)位置指定一個模式廓推。
DateFormat df = new SimpleDateFormat("yyyy年MM月dd日");
\3. 調(diào)用SimpleDateFormat中的parse方法刷袍,將字符串轉(zhuǎn)成一個Date對象23
Date date = df.parse(str);
2.能夠使用將日期格式化為字符串的方法
String format(Date date) :將參數(shù)Date對象格式化為一個字符串。并把這個字符串返回樊展。
調(diào)用SimpleDateFormat的format
日期格式化的步驟:
\1. 創(chuàng)建一個Date對象
Date date = new Date();
\2. 創(chuàng)建一個SimpleDateFormat對象呻纹,在構(gòu)造方法中給定指定的模式。
DateFormat df = new SimpleDateFormat("yyyy年MM月dd日");
構(gòu)造方法:
SimpleDateFormat(String pattern): 參數(shù)需要傳遞一個字符串類型的模式专缠。
\3. 調(diào)用SimpleDateFormat對象的format方法雷酪,將Date對象轉(zhuǎn)換為一個字符串。
String str = df.format(date);
Date->String:格式化涝婉。 使用SimpleDateFormat的format方法去完成哥力。
String->Date:解析。 使用SimpleDateFormat的parse方法去完成墩弯。
6.calendar類--日歷
1.獲取日歷
Calendar是一個抽象類吩跋, 如果要用,需要使用它的子類渔工。
因為地區(qū)敏感性锌钮, Calendar的子類對象不能由我們自己去new,而是要調(diào)用Calendar的靜態(tài)方法getInstance進行獲取涨缚。
Calendar中的方法:
static Calendar getInstance():
//Calendar c = Calendar.getInstance();
2.get方法
int get(int field): 參數(shù)field表示要獲取哪個字段的值轧粟。
注意: Calendar中的月份是從0開始的范圍是(0-11)。 Calendar中的月份比現(xiàn)實生活要少1脓魏,調(diào)用的時候要加一兰吟;
周日是第一天,調(diào)用的時候要減一茂翔。
3.set方法
void set(int field, int value): 可以給指定字段設(shè)置值混蔼。
參數(shù)field:表示要給哪個字段設(shè)置值。
參數(shù)value:表示要設(shè)置成什么值珊燎。
4.add方法
void add(int field, int amount): 可以對指定字段的值進行計算惭嚣。
參數(shù)field: 表示要對哪個字段進行計算。
參數(shù)amount: 表示如何計算悔政。 如果該參數(shù)是正數(shù)晚吞,那么就是加上該值。
如果該參數(shù)是負數(shù)谋国,那么就是減去該值槽地。
5.getTime方法
在Calendar中還有一個方法叫做getTime,可以獲取到Calendar對應(yīng)的Date對象(把Calendar轉(zhuǎn)成Date)芦瘾。
Date getTime(): 獲取Calendar對應(yīng)的Date對象捌蚊。
7.System類
1.currentTimeMillis方法
static long currentTimeMillis():獲取當(dāng)前操作系統(tǒng)的時間(以毫秒值表示的)
注意:這個方法用來計算整個程序的下運行時間。
2.System類的數(shù)組復(fù)制方法arraycopy
將數(shù)組中指定的數(shù)據(jù)拷貝到另一個數(shù)組中
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) :
1 src Object 源數(shù)組
2 srcPos int 源數(shù)組索引起始位置
3 dest Object 目標(biāo)數(shù)組
4 destPos int 目標(biāo)數(shù)組索引起始位置
5 length int 復(fù)制元素個數(shù)
8.StringBuilder類
1.簡述StringBuilder類與String類的區(qū)別近弟。
String類的對象內(nèi)容不可改變缅糟,所以每當(dāng)進行字符串拼接時瓜富,總是會在內(nèi)存中創(chuàng)建一個新的對象崩溪,所以經(jīng)常改變內(nèi)容的字符串最好不要用String获三,因為每次生成對象都會對系統(tǒng)性能產(chǎn)生影響磅轻。
StringBuilder又稱為可變字符序列脯倚,是JDK5.0中新增加的一個類兆沙,它是一個類似于String的字符串緩沖區(qū)轴踱,通過某些方法調(diào)用可以改變該序列的長度和內(nèi)容汤踏。即它是一個容器泥从,容器中可以裝很多字符串句占,并且能夠?qū)ζ渲械淖址M行各種操作。它的內(nèi)部擁有一個數(shù)組用來存放字符串內(nèi)容躯嫉,進行字符串拼接時纱烘,直接在數(shù)組中加入新內(nèi)容,StringBuilder會自動維護數(shù)組的擴容祈餐。
2.StringBuilder的構(gòu)造方法
StringBuilder(): 空參構(gòu)造擂啥。 使用這個構(gòu)造方法創(chuàng)建的StringBuilder對象,里面不會保存任何字符帆阳。
StringBuilder(String str): 會根據(jù)參數(shù)字符串構(gòu)建一個StringBuilder對象
3.StringBuilder中的常見方法:
StringBuilder append(任何類型): 對任何類型的數(shù)據(jù)進行拼接(追加)哺壶。返回值表示調(diào)用者對象本身。
String toString(): 將StringBuilder轉(zhuǎn)成一個String并返回。
9.包裝類
1.8種基本類型對應(yīng)的包裝類名稱
int->Integer
char->Character
2.自動裝箱山宾、自動拆箱的概念
自動裝箱: 基本類型自動轉(zhuǎn)成對應(yīng)的包裝類至扰。
自動拆箱: 包裝類自動轉(zhuǎn)成對應(yīng)的基本類型。
3.基本類型轉(zhuǎn)字符串:
\1. 可以使用String的靜態(tài)方法valueOf资锰。 不推薦
\2. 可以使用包裝類的toString方法敢课。 不推薦。
\3. 直接在這個基本類型數(shù)據(jù)的后面加上""绷杜。 推薦
4.字符串轉(zhuǎn)基本類型:
我們需要使用對應(yīng)包裝類的parseXXX方法(靜態(tài)方法)直秆。
如果要把字符串轉(zhuǎn)成int,那么我們可以使用Integer的parseInt方法鞭盟。
如果要把字符串轉(zhuǎn)成double圾结,那么我們使用Double的parseDouble方法。
如果要把字符串轉(zhuǎn)成long齿诉,那么我們可以使用Long的parseLong方法疫稿。
5.手動拆裝箱
手動裝箱(int -> Integer)
可以使用包裝類(Integer)中的valueOf的方法
static Integer valueOf(int i):傳遞一個int類型的數(shù)據(jù),返回一個Integer類型的結(jié)果鹃两。
手動拆箱(Integer -> int)
使用包裝類(Integer)中的intvalue方法
int intValue() :將Integer的值轉(zhuǎn)成int并返回遗座。
6.基本數(shù)據(jù)類型與包裝數(shù)據(jù)類型的使用標(biāo)準(zhǔn)
Reference:《阿里巴巴Java開發(fā)手冊》
- 【強制】所有的 POJO 類屬性必須使用包裝數(shù)據(jù)類型。
- 【強制】RPC 方法的返回值和參數(shù)必須使用包裝數(shù)據(jù)類型俊扳。
- 【推薦】所有的局部變量使用基本數(shù)據(jù)類型途蒋。
比如我們?nèi)绻远x了一個Student類,其中有一個屬性是成績score,如果用Integer而不用int定義,一次考試,學(xué)生可能沒考,值是null,也可能考了,但考了0分,值是0,這兩個表達的狀態(tài)明顯不一樣.
說明 :POJO 類屬性沒有初值是提醒使用者在需要使用時,必須自己顯式地進行賦值馋记,任何 NPE 問題号坡,或
者入庫檢查,都由使用者來保證梯醒。
正例 : 數(shù)據(jù)庫的查詢結(jié)果可能是 null宽堆,因為自動拆箱,用基本數(shù)據(jù)類型接收有 NPE 風(fēng)險茸习。
反例 : 比如顯示成交總額漲跌情況畜隶,即正負 x%,x 為基本數(shù)據(jù)類型号胚,調(diào)用的 RPC 服務(wù)籽慢,調(diào)用不成功時,返回的是默認值猫胁,頁面顯示為 0%箱亿,這是不合理的,應(yīng)該顯示成中劃線弃秆。所以包裝數(shù)據(jù)類型的 null 值届惋,能夠表示額外的信息髓帽,如:遠程調(diào)用失敗,異常退出脑豹。
10.集合與數(shù)組的區(qū)別
1.集合只能存放引用類型的數(shù)據(jù)氢卡。
數(shù)組可以存放任何類型的數(shù)據(jù)。
2.集合長度可變晨缴。
數(shù)組長度不變。
ArrayList是一個集合峡捡,長度可變击碗,ArrayList內(nèi)部是在使用一個數(shù)組保存數(shù)據(jù)。
類和類们拙、接口是實現(xiàn)
接口和接口時繼承
11.foreach類
使用foreach循環(huán)遍歷集合
for(數(shù)據(jù)類型 變量名 : 容器) {
//循環(huán)體
}數(shù)據(jù)類型: 要遍歷的容器中存放的是什么類型的數(shù)據(jù)稍途,那么這個數(shù)據(jù)類型就寫什么。
變量名: 表示容器中的每一個元素砚婆。
容器: 要遍歷的容器械拍,可以是集合也可以是數(shù)組。
增強for遍歷數(shù)組装盯,本質(zhì)還是普通for循環(huán)坷虑。
增強for的優(yōu)缺點:
優(yōu)點: 省略了索引的操作,語法非常簡潔埂奈。
缺點: 不能操作索引迄损,如果要在遍歷的過程中操作索引,還需要使用普通for循環(huán)账磺。