5-java常用類

1.Object類詳解

java.lang.Object

1.1 equals方法

equals是Object類中的方法(如下)苗踪,只能判斷引用類型战惊。

public boolean equals(object obj){
    return(this==obj); 
}

其中==是一個(gè)比較運(yùn)算符

==和equals的對比

  1. ==:既可以判斷基本類型,又可以判斷引用類型
  2. ==:如果判斷基本類型喂走,判斷的是值是否相等。
  3. ==:如果判斷引用類型,判斷的是地址是否相等俩莽,即判定是不是同一個(gè)對象
  4. equals只能判斷引用類型

1.2 equals方法的重寫

equals默認(rèn)判斷的是地址是否相等,子類中往往重寫該方法乔遮,用于判斷內(nèi)容是否相等扮超。

字符串的比較使用equals

1.3 hashcode方法

返回該對象的哈希碼值

兩個(gè)引用,如果指向的是同一個(gè)對象蹋肮,則哈希值肯定是一樣的

兩個(gè)引用出刷,如果指向的是不同對象,則哈希值是不一樣的

1.4 toString 方法

  1. 基本介紹

    默認(rèn)返回:全類名+@+哈希值的16進(jìn)制

  2. 重寫toString 方法坯辩,打印對象或拼接對象時(shí)馁龟,都會自動(dòng)調(diào)用該對象的toString 形式

    子類往往重寫toString 方法,用于返回對象的屬性信息


2.包裝類

為什么要使用包裝類漆魔?

在程序中某些位置坷檩,例如(集合,泛型)等不能使用基本數(shù)據(jù)類型有送,因此需要把基本數(shù)據(jù)類型轉(zhuǎn)換成對象類型淌喻。

2.1 包裝類的分類

包裝類的分類

2.2 自動(dòng)裝箱和拆箱

int num=200;
//自動(dòng)裝箱 int->Integer
Integer integer=num;//底層使用的是Integer.valueOf(num)
//自動(dòng)拆箱 Integer->int
int num2=integer; //底層仍然使用的是 intValue()方法

2.3 包裝類型和String類型的相互轉(zhuǎn)換

前提:Integer i = 100;//自動(dòng)裝箱

基本數(shù)據(jù)類型->String :

  1. String str1 = i + "";
  2. String str2 = i.toString();
  3. String str3 = String.valueOf(i);

String->基本數(shù)據(jù)類型:

  1. String str4 = "12345";
  2. Integer i2 = Integer.parseInt(str4);//使用到自動(dòng)裝箱
  3. Integer i3 = new Integer(str4);//構(gòu)造器
  4. Integer i4 = Integer.valueOf("23");

3. Math類

Math類包含用于執(zhí)行基本數(shù)學(xué)運(yùn)算的方法,如初等指數(shù)雀摘、對數(shù)裸删、平方根和三角函數(shù)

//看看 Math 常用的方法(靜態(tài)方法)
//1.abs 絕對值
int abs = Math.abs(-9);
System.out.println(abs);//9

//2.pow 求冪
double pow = Math.pow(2, 4);//2 的 4 次方
System.out.println(pow);//16

//3.ceil 向上取整,返回>=該參數(shù)的最小整數(shù)(轉(zhuǎn)成 double);
double ceil = Math.ceil(3.9);
System.out.println(ceil);//4.0

//4.floor 向下取整,返回<=該參數(shù)的最大整數(shù)(轉(zhuǎn)成 double)
double floor = Math.floor(4.001);
System.out.println(floor);//4.0

//5.round 四舍五入 Math.floor(該參數(shù)+0.5)
long round = Math.round(5.51);
System.out.println(round);//6

//6.sqrt 求開方
double sqrt = Math.sqrt(9.0);
System.out.println(sqrt);//3.0

//7.random 求隨機(jī)數(shù)  前閉后開
// random 返回的是 0 <= x < 1 之間的一個(gè)隨機(jī)小數(shù)
// Math.random() * (b-a) 返回的就是 0 <= 數(shù) <= b-a
// Math.random()*6 返回的是 0 <= x < 6 小數(shù)
// 2 + Math.random()*6 返回的就是 2<= x < 8 小數(shù)
// (int)(2 + Math.random()*6) 返回的就是 2 <= x <= 7//取整
// 公式就是 (int)(a + Math.random() * (b-a +1) )

//8.max , min 返回最大值和最小值
int min = Math.min(1, 9);
int max = Math.max(45, 90);
System.out.println("min=" + min);
System.out.println("max=" + max);

4. Arrays類

Arrays里面包含了一系列靜態(tài)方法阵赠,用于管理或操作數(shù)組(比如排序和搜索)

  1. toString 返回?cái)?shù)組的字符串形式

    Arrays.toString(arr)

  2. sort排序

  3. binarySearch通過二分搜索法進(jìn)行查找涯塔,要求必須排好序

    int index=Arrays.binarySearch(arr,3);

  4. copyOf 數(shù)組元素的復(fù)制

    Integer[] newArr = Arrays.copyOf(arr, arr.length);

  5. equals 比較兩個(gè)數(shù)組元素內(nèi)容是否完全一致

    boolean equals = Arrays.equals(arr, arr2);

5. Date類

時(shí)間戳:(Timestamp):1970年1月1日8時(shí)到現(xiàn)在的總秒數(shù)

Date date=new Data();
long time=data.getTime();
System.out.println(time);//將得到一個(gè)到現(xiàn)在的總秒數(shù)

如何轉(zhuǎn)換將時(shí)間戳格式化成年月日 時(shí)分秒

//通過format格式化一個(gè)時(shí)間戳
SimpleDateFormat sf=new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");
String format=sf.format(date);
System.out.println(format);

如何通過一個(gè)時(shí)間戳獲得一個(gè)時(shí)間

Long time=System.currentTimeMillos();
time-=15000000;
Date date=new Date(time);

SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM月-日 hh:mm:ss");
String format=sf.format(date);
System.out.println(format);

6.日歷類Calendar

Calendar是一個(gè)抽象類肌稻,并且構(gòu)造器時(shí)private。所以Calendar不能通過new來創(chuàng)建對象匕荸,而是通過getInstance()來獲取實(shí)例

Calendar c = Calendar.getInstance(); //創(chuàng)建日歷類對象//比較簡單爹谭,自由
System.out.println("c=" + c);
//2.獲取日歷對象的某個(gè)日歷字段
System.out.println("年:" + c.get(Calendar.YEAR));
// 這里為什么要 + 1, 因?yàn)?Calendar 返回月時(shí)候,是按照 0 開始編號
System.out.println("月:" + (c.get(Calendar.MONTH) + 1));
System.out.println("日:" + c.get(Calendar.DAY_OF_MONTH));
System.out.println("小時(shí):" + c.get(Calendar.HOUR));
System.out.println("分鐘:" + c.get(Calendar.MINUTE));
System.out.println("秒:" + c.get(Calendar.SECOND));
//Calender 沒有專門的格式化方法榛搔,所以需要程序員自己來組合顯示
System.out.println(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1)
                                        + "-" +c.get(Calendar.DAY_OF_MONTH) 
                                        +" " + c.get(Calendar.HOUR_OF_DAY) 
                                        + ":" + c.get(Calendar.MINUTE) 
                                        + ":" + c.get(Calendar.SECOND) );
}

JDK8之后加入:

LocalDate(日期/年月日):只包含日期诺凡,可以獲取日期字段

LocalTime(時(shí)間/時(shí)分秒):只包含時(shí)間,可以獲取時(shí)間字段

LocalDateTime(日期時(shí)間/年月日時(shí)分秒):包含日期+時(shí)間践惑,可以獲取日期和時(shí)間字段

//1. 使用 now() 返回表示當(dāng)前日期時(shí)間的 對象
LocalDateTime ldt = LocalDateTime.now(); //LocalDate.now();//LocalTime.now()
System.out.println(ldt);

//2. 使用 DateTimeFormatter 對象來進(jìn)行格式化
// 創(chuàng)建 DateTimeFormatter 對象
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String format = dateTimeFormatter.format(ldt);
System.out.println("格式化的日期=" + format);

System.out.println("年=" + ldt.getYear());
System.out.println("月=" + ldt.getMonth());
System.out.println("月=" + ldt.getMonthValue());
System.out.println("日=" + ldt.getDayOfMonth());
System.out.println("時(shí)=" + ldt.getHour());
System.out.println("分=" + ldt.getMinute());
System.out.println("秒=" + ldt.getSecond());

LocalDate now = LocalDate.now(); //可以獲取年月日
LocalTime now2 = LocalTime.now();//獲取到時(shí)分秒
//提供 plus 和 minus 方法可以對當(dāng)前時(shí)間進(jìn)行加或者減
//看看 890 天后腹泌,是什么時(shí)候 把 年月日-時(shí)分秒
LocalDateTime localDateTime = ldt.plusDays(890);
System.out.println("890 天后=" + dateTimeFormatter.format(localDateTime));
//看看在 3456 分鐘前是什么時(shí)候,把 年月日-時(shí)分秒輸出
LocalDateTime localDateTime2 = ldt.minusMinutes(3456);
System.out.println("3456 分鐘前 日期=" + dateTimeFormatter.format(localDateTime2));
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末尔觉,一起剝皮案震驚了整個(gè)濱河市凉袱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌侦铜,老刑警劉巖专甩,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異钉稍,居然都是意外死亡涤躲,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進(jìn)店門嫁盲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來篓叶,“玉大人,你說我怎么就攤上這事羞秤。” “怎么了左敌?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵瘾蛋,是天一觀的道長。 經(jīng)常有香客問我矫限,道長哺哼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任叼风,我火速辦了婚禮取董,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘无宿。我一直安慰自己茵汰,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布孽鸡。 她就那樣靜靜地躺著蹂午,像睡著了一般栏豺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上豆胸,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天奥洼,我揣著相機(jī)與錄音,去河邊找鬼晚胡。 笑死灵奖,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的估盘。 我是一名探鬼主播瓷患,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼忿檩!你這毒婦竟也來了尉尾?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤燥透,失蹤者是張志新(化名)和其女友劉穎沙咏,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體班套,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡肢藐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了吱韭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吆豹。...
    茶點(diǎn)故事閱讀 38,646評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖理盆,靈堂內(nèi)的尸體忽然破棺而出痘煤,到底是詐尸還是另有隱情,我是刑警寧澤猿规,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布衷快,位于F島的核電站,受9級特大地震影響姨俩,放射性物質(zhì)發(fā)生泄漏蘸拔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一环葵、第九天 我趴在偏房一處隱蔽的房頂上張望调窍。 院中可真熱鬧,春花似錦张遭、人聲如沸邓萨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽先誉。三九已至湿刽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間褐耳,已是汗流浹背诈闺。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留铃芦,地道東北人雅镊。 一個(gè)月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像刃滓,于是被迫代替她去往敵國和親仁烹。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容