JavaSE08——常用类
本文章是本人根據(jù)視頻和網(wǎng)上資料整理所寫筆記,可能有不通順或遺漏的地方,請(qǐng)盡量參考學(xué)習(xí)來源處的鏈接去進(jìn)行學(xué)習(xí)。
學(xué)習(xí)來源
【狂神說Java】Java零基礎(chǔ)學(xué)習(xí)視頻通俗易懂:https://www.bilibili.com/video/BV12J41137hu
菜鳥教程: https://www.runoob.com/
Java常用類(一)之Object類詳解 https://www.cnblogs.com/zhangyinhua/p/7715486.html
Random類的使用 https://www.cnblogs.com/libinhong/p/10988902.html
Object類
hashcode()
該方法用于哈希查找,可以減少在查找中使用equals的次數(shù),重寫了equals方法一般都要重寫hashCode方法。這個(gè)方法在一些具有哈希功能的Collection中用到。
一般必須滿足obj1.equals(obj2)==true。可以推出obj1.hash- Code()==obj2.hashCode(),但是hashCode相等不一定就滿足equals。不過為了提高效率,應(yīng)該盡量使上面兩個(gè)條件接近等價(jià)。
如果不重寫hashcode(),在HashSet中添加兩個(gè)equals的對(duì)象,會(huì)將兩個(gè)對(duì)象都加入進(jìn)去。
toString()
Object 類的 toString 方法返回一個(gè)字符串,該字符串由類名(對(duì)象是該類的一個(gè)實(shí)例)、at 標(biāo)記符“@”和此對(duì)象哈希碼的無符號(hào)十六進(jìn)制表示組成。
該方法用得比較多,一般子類都有覆蓋。
clone()
Clone()方法的使用比較簡(jiǎn)單,注意如下幾點(diǎn)即可:
什么時(shí)候使用shallow Clone,什么時(shí)候使用deep Clone,這個(gè)主要看具體對(duì)象的域是什么性質(zhì)的,基本型別還是reference variable
調(diào)用Clone()方法的對(duì)象所屬的類(Class)必須implements Clonable接口,否則在調(diào)用Clone方法的時(shí)候會(huì)拋出CloneNotSupportedException
getClass()
返回次Object的運(yùn)行時(shí)類類型。
不可重寫,要調(diào)用的話,一般和getName()聯(lián)合使用,如getClass().getName();
notify()
該方法喚醒在該對(duì)象上等待的所有線程。
wait()
wait方法就是使當(dāng)前線程等待該對(duì)象的鎖,當(dāng)前線程必須是該對(duì)象的擁有者,也就是具有該對(duì)象的鎖。wait()方法一直等待,直到獲得鎖或者被中斷。wait(long timeout)設(shè)定一個(gè)超時(shí)間隔,
如果在規(guī)定時(shí)間內(nèi)沒有獲得鎖就返回。
equals()
Object中的equals方法是直接判斷this和obj本身的值是否相等,即用來判斷調(diào)用equals的對(duì)象和形參obj所引用的對(duì)象是否是同一對(duì)象,
所謂同一對(duì)象就是指內(nèi)存中同一塊存儲(chǔ)單元,如果this和obj指向的hi同一塊內(nèi)存對(duì)象,則返回true,如果this和obj指向的不是同一塊內(nèi)存,則返回false。
注意:即便是內(nèi)容完全相等的兩塊不同的內(nèi)存對(duì)象,也返回false。
如果是同一塊內(nèi)存,則object中的equals方法返回true,如果是不同的內(nèi)存,則返回false
如果希望不同內(nèi)存但相同內(nèi)容的兩個(gè)對(duì)象equals時(shí)返回true,則我們需要重寫父類的equal方法
String類已經(jīng)重寫了object中的equals方法(這樣就是比較內(nèi)容是否相等了)
Random類
生成隨機(jī)數(shù)
Random類的nextDouble()方法返回的是0.0至1.0之間的double類型值,nextFloat()方法返回的是0.0至1.0之間的float類型值,nextInt(int n)返回的是0(包括)至n(不包括)之間的int值
示例
import java.util.Random;
public class Main{
public static void main(String[] args)throws Exception{
Random r=new Random();
System.out.println("產(chǎn)生Float類型隨機(jī)數(shù):"+r.nextFloat());
System.out.println("產(chǎn)生1~100之間int類型隨機(jī)數(shù):"+r.nextInt(100));
System.out.println("產(chǎn)生double類型隨機(jī)數(shù):"+r.nextDouble());
}
}
File類
創(chuàng)建文件
File parentFile= new File(path);
查看文件
查找文件
修改文件
刪除文件
包裝類
自動(dòng)裝箱和拆箱
Date類
Date
SimpleDateFormat
yyyy-MM-dd HH:mm:ss
Calendar(推薦使用)
Math
常見的數(shù)學(xué)運(yùn)算
String類
非線程安全
final
操作量少用String
StringBuffer
可變長(zhǎng)
append()
多線程、大數(shù)據(jù)
效率低,線程安全:StringBuffer中很多方法帶有synchronize關(guān)鍵詞
StringBuilder
可變長(zhǎng)
單線程、大數(shù)據(jù)
效率高,不安全
String值計(jì)算
String str = "a" + 1 + 2; => a12
String str = 'a' + 1 + 2; => a被認(rèn)為是char字符轉(zhuǎn)為了數(shù)字后進(jìn)行了運(yùn)算
String str = 1 + 2 + "a"; => 3a
總結(jié)
以上是生活随笔為你收集整理的JavaSE08——常用类的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BookxNote_入门
- 下一篇: 怎么创建具有真实纹理的CG场景岩石?