欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
JavaSE部分 (常用API拓展)
寫(xiě)在前面:分享技術(shù),共同進(jìn)步,把寫(xiě)的筆記搬運至博客,有不足請見(jiàn)諒,相關(guān)意見(jiàn)可評論告知 o( ̄▽?zhuān)?o
編程路漫漫,學(xué)習無(wú)止盡!
(一)Object 類(lèi)
概述
java.lang.Object類(lèi)是Java語(yǔ)言中的根類(lèi),即所有類(lèi)的父類(lèi)。它中描述的所有方法子類(lèi)都可以使用。在對象實(shí)例化的時(shí)候,最終找的父類(lèi)就是Object。
根據JDK源代碼及Object類(lèi)的API文檔,Object類(lèi)當中包含的方法有11個(gè)?,F講述其中的2個(gè):
public String toString():返回該對象的字符串表示。
public boolean equals(Object obj):指示其他某個(gè)對象是否與此對象“相等”。
toString方法
方法摘要
public String toString():返回該對象的字符串表示。
toString方法返回該對象的字符串表示,其實(shí)該字符串內容就是對象的類(lèi)型+@+內存地址值。
由于toString方法返回的結果是內存地址,而在開(kāi)發(fā)中,經(jīng)常需要按照對象的屬性得到相應的字符串表現形式,因此也需要重寫(xiě)它。
覆蓋重寫(xiě)
如果不希望使用toString方法的默認行為,則可以對它進(jìn)行覆蓋重寫(xiě)。例如自定義的Person類(lèi):
public class Person { private String name; private int age; @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } // 省略構造器與Getter Setter}
在IntelliJ IDEA中,可以點(diǎn)擊Code菜單中的Generate...,也可以使用快捷鍵alt+insert,點(diǎn)擊toString()選項。選擇需要包含的成員變量并確定。
在我們直接使用輸出語(yǔ)句輸出對象名的時(shí)候,其實(shí)通過(guò)該對象調用了其toString()方法。
equals方法
public boolean equals(Object obj):指示其他某個(gè)對象是否與此對象“相等”。
調用成員方法equals并指定參數為另一個(gè)對象,則可以判斷這兩個(gè)對象是否是相同的。這里的“相同”有默認和自定義兩種方式。
默認地址比較
如果沒(méi)有覆蓋重寫(xiě)equals方法,那么Object類(lèi)中默認進(jìn)行==運算符的對象地址比較,只要不是同一個(gè)對象,結果必然為false。
對象內容比較
如果希望進(jìn)行對象的內容比較,即所有或指定的部分成員變量相同就判定兩個(gè)對象相同,則可以覆蓋重寫(xiě)equals方法。例如:
import java.util.Objects;public class Person { private String name; private int age; @Override public boolean equals(Object o) { // 如果對象地址一樣,則認為相同 if (this == o) return true; // 如果參數為空,或者類(lèi)型信息不一樣,則認為不同 if (o == null || getClass() != o.getClass()) return false; // 轉換為當前類(lèi)型 Person person = (Person) o; // 要求基本類(lèi)型相等,并且將引用類(lèi)型交給java.util.Objects類(lèi)的equals靜態(tài)方法取用結果 return age == person.age && Objects.equals(name, person.name); }}
這段代碼充分考慮了對象為空、類(lèi)型一致等問(wèn)題,但方法內容并不唯一。大多數IDE都可以自動(dòng)生成equals方法的代碼內容。在IntelliJ IDEA中,可以使用Code菜單中的Generate…選項,也可以使用快捷鍵alt+insert,并選擇equals() and hashCode()進(jìn)行自動(dòng)代碼生成。如下圖所示:
tips:Object類(lèi)當中的hashCode等其他方法,今后學(xué)習。
在剛才IDEA自動(dòng)重寫(xiě)equals代碼中,使用到了java.util.Objects類(lèi),那么這個(gè)類(lèi)是什么呢?
在JDK7添加了一個(gè)Objects工具類(lèi),它提供了一些方法來(lái)操作對象,它由一些靜態(tài)的實(shí)用方法組成,這些方法是null-save(空指針安全的)或null-tolerant(容忍空指針的),用于計算對象的hashcode、返回對象的字符串表示形式、比較兩個(gè)對象。
在比較兩個(gè)對象的時(shí)候,Object的equals方法容易拋出空指針異常,而Objects類(lèi)中的equals方法就優(yōu)化了這個(gè)問(wèn)題。方法如下:
public static boolean equals(Object a, Object b):判斷兩個(gè)對象是否相等。
源碼如下
public static boolean equals(Object a, Object b) { return (a == b) || (a != null && a.equals(b)); }(二)日期時(shí)間類(lèi)
Date類(lèi)
java.util.Date類(lèi) 表示特定的瞬間,精確到毫秒。
繼續查閱Date類(lèi)的描述,發(fā)現Date擁有多個(gè)構造函數,只是部分已經(jīng)過(guò)時(shí),但是其中有未過(guò)時(shí)的構造函數可以把毫秒值轉成日期對象。
public Date():分配Date對象并初始化此對象,以表示分配它的時(shí)間(精確到毫秒)。
public Date(long date):分配Date對象并初始化此對象,以表示自從標準基準時(shí)間(稱(chēng)為“歷元(epoch)”,即1970年1月1日00:00:00 GMT)以來(lái)的指定毫秒數。
tips: 由于我們處于東八區,所以我們的基準時(shí)間為1970年1月1日8時(shí)0分0秒。
簡(jiǎn)單來(lái)說(shuō):使用無(wú)參構造,可以自動(dòng)設置當前系統時(shí)間的毫秒時(shí)刻;指定long類(lèi)型的構造參數,可以自定義毫秒時(shí)刻。例如:
import java.util.Date;public class Demo01Date { public static void main(String[] args) { // 創(chuàng )建日期對象,把當前的時(shí)間 System.out.println(new Date()); // Tue Jan 16 14:37:35 CST 2018 // 創(chuàng )建日期對象,把當前的毫秒值轉成日期對象 System.out.println(new Date(0L)); // Thu Jan 01 08:00:00 CST 1970 }}
tips:在使用println方法時(shí),會(huì )自動(dòng)調用Date類(lèi)中的toString方法。Date類(lèi)對Object類(lèi)中的toString方法進(jìn)行了覆蓋重寫(xiě),所以結果為指定格式的字符串。
常用方法
Date類(lèi)中的多數方法已經(jīng)過(guò)時(shí),常用的方法有:
public long getTime() 把日期對象轉換成對應的時(shí)間毫秒值。
DateFormat類(lèi)
java.text.DateFormat 是日期/時(shí)間格式化子類(lèi)的抽象類(lèi),我們通過(guò)這個(gè)類(lèi)可以幫我們完成日期和文本之間的轉換,也就是可以在Date對象與String對象之間進(jìn)行來(lái)回轉換。
格式化:按照指定的格式,從Date對象轉換為String對象。
解析:按照指定的格式,從String對象轉換為Date對象。
構造方法
由于DateFormat為抽象類(lèi),不能直接使用,所以需要常用的子類(lèi)java.text.SimpleDateFormat。這個(gè)類(lèi)需要一個(gè)模式(格式)來(lái)指定格式化或解析的標準。構造方法為:
public SimpleDateFormat(String pattern):用給定的模式和默認語(yǔ)言環(huán)境的日期格式符號構造SimpleDateFormat。
參數pattern是一個(gè)字符串,代表日期時(shí)間的自定義格式。
格式規則
常用的格式規則為:
標識字母(區分大小寫(xiě))含義
y年
M月
d日
H時(shí)
m分
s秒
備注:更詳細的格式規則,可以參考SimpleDateFormat類(lèi)的API文檔0。
創(chuàng )建SimpleDateFormat對象的代碼如:
import java.text.DateFormat;import java.text.SimpleDateFormat;public class Demo02SimpleDateFormat { public static void main(String[] args) { // 對應的日期格式如:2018-01-16 15:06:38 DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); } }常用方法
DateFormat類(lèi)的常用方法有:
public String format(Date date):將Date對象格式化為字符串。
public Date parse(String source):將字符串解析為Date對象。
format方法
使用format方法的代碼為:
import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Date;/* 把Date對象轉換成String*/public class Demo03DateFormatMethod { public static void main(String[] args) { Date date = new Date(); // 創(chuàng )建日期格式化對象,在獲取格式化對象時(shí)可以指定風(fēng)格 DateFormat df = new SimpleDateFormat("yyyy年MM月dd日"); String str = df.format(date); System.out.println(str); // 2008年1月23日 }}parse方法
使用parse方法的代碼為:
import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;/* 把String轉換成Date對象*/public class Demo04DateFormatMethod { public static void main(String[] args) throws ParseException { DateFormat df = new SimpleDateFormat("yyyy年MM月dd日"); String str = "2018年12月11日"; Date date = df.parse(str); System.out.println(date); // Tue Dec 11 00:00:00 CST 2018 }}Calendar類(lèi)
概念
java.util.Calendar是日歷類(lèi),在Date后出現,替換掉了許多Date的方法。該類(lèi)將所有可能用到的時(shí)間信息封裝為靜態(tài)成員變量,方便獲取。日歷類(lèi)就是方便獲取各個(gè)時(shí)間屬性的。
獲取方式
Calendar為抽象類(lèi),由于語(yǔ)言敏感性,Calendar類(lèi)在創(chuàng )建對象時(shí)并非直接創(chuàng )建,而是通過(guò)靜態(tài)方法創(chuàng )建,返回子類(lèi)對象,如下:
Calendar靜態(tài)方法
項目方法
3279XvHNqV7289
Buca42005/05/07 03:07:06
3G211快手賺錢(qián)
ntA492005-01-20 17:57:08
36p76zSfD38961
public static Calendar getInstance():使用默認時(shí)區和語(yǔ)言環(huán)境獲得一個(gè)日歷
例如:
import java.util.Calendar;public class Demo06CalendarInit { public static void main(String[] args) { Calendar cal = Calendar.getInstance(); } }常用方法
根據Calendar類(lèi)的API文檔,常用方法有:
public int get(int field):返回給定日歷字段的值。
public void set(int field, int value):將給定的日歷字段設置為給定值。
public abstract void add(int field, int amount):根據日歷的規則,為給定的日歷字段添加或減去指定的時(shí)間量。
public Date getTime():返回一個(gè)表示此Calendar時(shí)間值(從歷元到現在的毫秒偏移量)的Date對象。
Calendar類(lèi)中提供很多成員常量,代表給定的日歷字段:
字段值含義
YEAR年
MONTH月(從0開(kāi)始,可以+1使用)
DAY_OF_MONTH月中的天(幾號)
HOUR時(shí)(12小時(shí)制)
HOUR_OF_DAY時(shí)(24小時(shí)制)
MINUTE分
SECOND秒
DAY_OF_WEEK周中的天(周幾,周日為1,可以-1使用)
get/set方法
get方法用來(lái)獲取指定字段的值,set方法用來(lái)設置指定字段的值,代碼使用演示:
import java.util.Calendar;public class CalendarUtil { public static void main(String[] args) { // 創(chuàng )建Calendar對象 Calendar cal = Calendar.getInstance(); // 設置年 int year = cal.get(Calendar.YEAR); // 設置月 int month = cal.get(Calendar.MONTH) + 1; // 設置日 int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH); System.out.print(year + "年" + month + "月" + dayOfMonth + "日"); } }import java.util.Calendar;public class Demo07CalendarMethod { public static void main(String[] args) { Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, 2020); System.out.print(year + "年" + month + "月" + dayOfMonth + "日"); // 2020年1月17日 }}add方法
add方法可以對指定日歷字段的值進(jìn)行加減操作,如果第二個(gè)參數為正數則加上偏移量,如果為負數則減去偏移量。代碼如:
import java.util.Calendar;public class Demo08CalendarMethod { public static void main(String[] args) { Calendar cal = Calendar.getInstance(); System.out.print(year + "年" + month + "月" + dayOfMonth + "日"); // 2018年1月17日 // 使用add方法 cal.add(Calendar.DAY_OF_MONTH, 2); // 加2天 cal.add(Calendar.YEAR, -3); // 減3年 System.out.print(year + "年" + month + "月" + dayOfMonth + "日"); // 2015年1月18日; }}getTime方法
Calendar中的getTime方法并不是獲取毫秒時(shí)刻,而是拿到對應的Date對象。
import java.util.Calendar;import java.util.Date;public class Demo09CalendarMethod { public static void main(String[] args) { Calendar cal = Calendar.getInstance(); Date date = cal.getTime(); System.out.println(date); // Tue Jan 16 16:03:09 CST 2018 }}
小貼士:
? 西方星期的開(kāi)始為周日,中國為周一。
? 在Calendar類(lèi)中,月份的表示是以0-11代表1-12月。
? 日期是有大小關(guān)系的,時(shí)間靠后,時(shí)間越大。
(三)System類(lèi)
java.lang.System類(lèi)中提供了大量的靜態(tài)方法,可以獲取與系統相關(guān)的信息或系統級操作,在System類(lèi)的API文檔中,常用的方法有:
public static long currentTimeMillis():返回以毫秒為單位的當前時(shí)間。
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length):將數組中指定的數據拷貝到另一個(gè)數組中。
currentTimeMillis方法
實(shí)際上,currentTimeMillis方法就是 獲取當前系統時(shí)間與1970年01月01日00:00點(diǎn)之間的毫秒差值
import java.util.Date;public class SystemDemo { public static void main(String[] args) { //獲取當前時(shí)間毫秒值 System.out.println(System.currentTimeMillis()); // 1516090531144 }}練習
驗證for循環(huán)打印數字1-9999所需要使用的時(shí)間(毫秒)
public class SystemTest1 { public static void main(String[] args) { long start = System.currentTimeMillis(); for (int i = 0; i < 10000; i++) { System.out.println(i); } long end = System.currentTimeMillis(); System.out.println("共耗時(shí)毫秒:" + (end - start)); }}arraycopy方法
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length):將數組中指定的數據拷貝到另一個(gè)數組中。
數組的拷貝動(dòng)作是系統級的,性能很高。System.arraycopy方法具有5個(gè)參數,含義分別為:
參數序號參數名稱(chēng)參數類(lèi)型參數含義
1srcObject源數組
2srcPosint源數組索引起始位置
3destObject目標數組
4destPosint目標數組索引起始位置
5lengthint復制元素個(gè)數
(四)StringBuilder類(lèi)
字符串拼接問(wèn)題
由于String類(lèi)的對象內容不可改變,所以每當進(jìn)行字符串拼接時(shí),總是會(huì )在內存中創(chuàng )建一個(gè)新的對象。例如:
public class StringDemo { public static void main(String[] args) { String s = "Hello"; s += "World"; System.out.println(s); }}
引言:
在A(yíng)PI中對String類(lèi)有這樣的描述:字符串是常量,它們的值在創(chuàng )建后不能被更改。
根據這句話(huà)分析我們的代碼,其實(shí)總共產(chǎn)生了三個(gè)字符串,即"Hello"、"World"和"HelloWorld"。引用變量s首先指向Hello對象,最終指向拼接出來(lái)的新字符串對象,即HelloWord 。
由此可知,如果對字符串進(jìn)行拼接操作,每次拼接,都會(huì )構建一個(gè)新的String對象,既耗時(shí),又浪費空間。為了解決這一問(wèn)題,可以使用java.lang.StringBuilder類(lèi)。
StringBuilder概述
查閱java.lang.StringBuilder的API,StringBuilder又稱(chēng)為可變字符序列,它是一個(gè)類(lèi)似于 String 的字符串緩沖區,通過(guò)某些方法調用可以改變該序列的長(cháng)度和內容。
原來(lái)StringBuilder是個(gè)字符串的緩沖區,即它是一個(gè)容器,容器中可以裝很多字符串。并且能夠對其中的字符串進(jìn)行各種操作。
它的內部擁有一個(gè)數組用來(lái)存放字符串內容,進(jìn)行字符串拼接時(shí),直接在數組中加入新內容。StringBuilder會(huì )自動(dòng)維護數組的擴容。原理如下圖所示:(默認16字符空間,超過(guò)自動(dòng)擴充)
構造方法
根據StringBuilder的API文檔,常用構造方法有2個(gè):
public StringBuilder():構造一個(gè)空的StringBuilder容器。
public StringBuilder(String str):構造一個(gè)StringBuilder容器,并將字符串添加進(jìn)去。
public class StringBuilderDemo { public static void main(String[] args) { StringBuilder sb1 = new StringBuilder(); System.out.println(sb1); // (空白) // 使用帶參構造 StringBuilder sb2 = new StringBuilder("itcast"); System.out.println(sb2); // itcast }}常用方法
StringBuilder常用的方法有2個(gè):
public StringBuilder append(...):添加任意類(lèi)型數據的字符串形式,并返回當前對象自身。
public String toString():將當前StringBuilder對象轉換為String對象。
append方法
append方法具有多種重載形式,可以接收任意類(lèi)型的參數。任何數據作為參數都會(huì )將對應的字符串內容添加到StringBuilder中。例如:
public class Demo02StringBuilder { public static void main(String[] args) { //創(chuàng )建對象 StringBuilder builder = new StringBuilder(); //public StringBuilder append(任意類(lèi)型) StringBuilder builder2 = builder.append("hello"); //對比一下 System.out.println("builder:"+builder); System.out.println("builder2:"+builder2); System.out.println(builder == builder2); //true // 可以添加 任何類(lèi)型 builder.append("hello"); builder.append("world"); builder.append(true); builder.append(100); // 在我們開(kāi)發(fā)中,會(huì )遇到調用一個(gè)方法后,返回一個(gè)對象的情況。然后使用返回的對象繼續調用方法。 // 這種時(shí)候,我們就可以把代碼現在一起,如append方法一樣,代碼如下 //鏈式編程 builder.append("hello").append("world").append(true).append(100); System.out.println("builder:"+builder); }}
備注:StringBuilder已經(jīng)覆蓋重寫(xiě)了Object當中的toString方法。
toString方法
通過(guò)toString方法,StringBuilder對象將會(huì )轉換為不可變的String對象。如:
public class Demo16StringBuilder { public static void main(String[] args) { // 鏈式創(chuàng )建 StringBuilder sb = new StringBuilder("Hello").append("World").append("Java"); // 調用方法 String str = sb.toString(); System.out.println(str); // HelloWorldJava }}
(五)包裝類(lèi)
概念闡述:
如下圖包裝類(lèi)小提示:
int -128~ 128
裝箱與拆箱
基本類(lèi)型與對應的包裝類(lèi)對象之間,來(lái)回轉換的過(guò)程稱(chēng)為”裝箱“與”拆箱“:
裝箱:從基本類(lèi)型轉換為對應的包裝類(lèi)對象。
拆箱:從包裝類(lèi)對象轉換為對應的基本類(lèi)型。
用Integer與 int為例:(看懂代碼即可)
基本數值---->包裝對象
1.構造方法
2.靜態(tài)方法
分別如下
Integer i = new Integer(4);//使用構造函數函數Integer iii = Integer.valueOf(4);//使用包裝類(lèi)中的valueOf方法
包裝對象---->基本數值
int num = i.intValue();自動(dòng)裝箱與自動(dòng)拆箱
由于我們經(jīng)常要做基本類(lèi)型與包裝類(lèi)之間的轉換,從Java 5(JDK 1.5)開(kāi)始,基本類(lèi)型與包裝類(lèi)的裝箱、拆箱動(dòng)作可以自動(dòng)完成。例如:
自動(dòng)裝箱:直接把int類(lèi)型的整數賦值包裝類(lèi) Integer in = 1; 就相當于 Integer in = new Integer(1); Integer in = 1; 自動(dòng)拆箱:in是包裝類(lèi),無(wú)法直接參與運算,可以自動(dòng)轉換為基本數據類(lèi)型,在進(jìn)行計算 in+2;就相當于 in.intVale() + 2 = 3 in = in.intVale() + 2 = 3 又是一個(gè)自動(dòng)裝箱 in = in+2;基本類(lèi)型轉換為String
基本類(lèi)型->字符串(String) 1.基本類(lèi)型的值+"" 最簡(jiǎn)單的方法(常用) 2.包裝類(lèi)的靜態(tài)方法toString(參數),不是Object類(lèi)的toString() 重載 static String toString(int i) 返回一個(gè)表示指定整數的 String 對象。 3.String類(lèi)的靜態(tài)方法valueOf(參數) static String valueOf(int i) 返回 int 參數的字符串表示形式。 字符串(String)->基本類(lèi)型 使用包裝類(lèi)的靜態(tài)方法parseXXX("字符串"); Integer類(lèi): static int parseInt(String s) Double類(lèi): static double parseDouble(String s)
基本類(lèi)型轉換String總共有三種方式,這里推薦使用下面形式
基本類(lèi)型直接與””相連接即可;如:520+""
String轉換成對應的基本類(lèi)型
除了Character類(lèi)之外,其他所有包裝類(lèi)都具有parseXxx靜態(tài)方法可以將字符串參數轉換為對應的基本類(lèi)型:
public static byte parseByte(String s):將字符串參數轉換為對應的byte基本類(lèi)型。
public static short parseShort(String s):將字符串參數轉換為對應的short基本類(lèi)型。
public static int parseInt(String s):將字符串參數轉換為對應的int基本類(lèi)型。
public static long parseLong(String s):將字符串參數轉換為對應的long基本類(lèi)型。
public static float parseFloat(String s):將字符串參數轉換為對應的float基本類(lèi)型。
public static double parseDouble(String s):將字符串參數轉換為對應的double基本類(lèi)型。
public static boolean parseBoolean(String s):將字符串參數轉換為對應的boolean基本類(lèi)型。
代碼使用(僅以Integer類(lèi)的靜態(tài)方法parseXxx為例)如:
public class Demo18WrapperParse { public static void main(String[] args) { int num = Integer.parseInt("100"); }}
注意:如果字符串參數的內容無(wú)法正確轉換為對應的基本類(lèi)型,則會(huì )拋出java.lang.NumberFormatException異常。
寫(xiě)在最后:全棧方向,前端已經(jīng)大部分學(xué)完,將會(huì )以復習的形式出現在博客,大家敬請期待哈~
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Java代碼性能優(yōu)化總結 推薦收藏
String, StringBuffer, StringBuilder區別
StringBuffer和StringBuilder的區別
第十五天 常用API-object&string&stringbuilder&stringbuffer【悟空教程】
java中字符類(lèi)型轉換
常見(jiàn)的字符串處理功能擴展
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久