java面試寶典beta感恩于心回報(bào)系列-Java_第1頁
java面試寶典beta感恩于心回報(bào)系列-Java_第2頁
java面試寶典beta感恩于心回報(bào)系列-Java_第3頁
java面試寶典beta感恩于心回報(bào)系列-Java_第4頁
java面試寶典beta感恩于心回報(bào)系列-Java_第5頁
已閱讀5頁,還剩566頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第一章內(nèi)容介 第二章JavaSE基 一、Java面向?qū)? 二、JavaSE語法(2017-11-12- &和&&的區(qū)別(2017-11-12- 兩個(gè)對(duì)象值相同(x.equals(y)==true),但卻可有不同的hashCode,這句話對(duì)不對(duì)?(2017-11-14- 抽象的 )方法是否可同時(shí)是靜態(tài)的(static),是否可同時(shí)是本地方法(native),是否可同時(shí) Strings o";ssworld!";這兩行代碼執(zhí)行后,原始的String 三、Java中的多 四、Java的異常處 五、JavaSE常用 switch是否能作用在byte上,是否能作用在long上,是否能作用在String上?(2017-11-14- 數(shù)組有沒有l(wèi)ength()方法?String有沒有l(wèi)ength()方法?(2017-11-14- StringBuffer/StringBuilder對(duì)象的append 六、Java的數(shù)據(jù)類 shorts1=1;s1=s1+1;有錯(cuò)嗎?shorts1=1;s1+=1有錯(cuò)嗎;(2017-11-12- int和和Integer有什么區(qū)別?(2017-11-12- 七、Java的 如何將一個(gè)java對(duì)象序列化到文件 什么是java序列化,如何實(shí)現(xiàn)java序列化?(2017-12-7- 八、Java的集 List和Map、Set的區(qū)別(2017-11-22- 九、Java的多線程和并發(fā) 十、Java內(nèi)部 靜態(tài)嵌套類(StaticNestedClass)和內(nèi)部類(InnerClass)的不同?(2017-11-16- 第三章JavaSE高 一、Java中的反 說說你對(duì)Java中反射的理 二、Java中的動(dòng)態(tài)寫一個(gè)ArrayList的動(dòng)態(tài)類(筆試題 三、Java中的設(shè)計(jì)模式&回收機(jī) heap和stack有什么區(qū)別(2017-2- 解釋內(nèi)存中的棧(stack)、堆(heap)和方法區(qū)(methodarea)的用法(2017-11-12- 四、Java的類加載器(2015-12- Java類加載體系之ClassLoader雙親委托機(jī)制(2017-2- 描述一下JVM加載class(2017-11-15- 五、JVM基礎(chǔ)知識(shí)(2017-11-16- 既然有GC機(jī)制,為什么還會(huì)有內(nèi)存的情況(2017-11-16- 六、GC基礎(chǔ)知識(shí)(2017-11-16- 第四章JavaWEB基 四 和 什么是jsp,什么是Servlet?jsp和Servlet有什么區(qū)別?(2017-11-23- 六、XML技 第五章JavaWEB高 一、Filter和 二、 談?wù)勀銓?duì)ajax的認(rèn)識(shí)?(2017-11-23- 三、 說一下常用的Linux命 四、常見的前端框架有哪 AngularJS(2017-11-23- 第六章數(shù)據(jù) 一、 二、 過程與SQL的對(duì)比?(2017-11-21- 第七章框 一、 如何解決get和post亂碼問題?(2017-11-24- 二、 談?wù)勀銓?duì)Spring的理解(2017-11-13- 簡單介紹一下Springbean的生命周期(2017-11-21- 解釋SpringJDBC、SpringDAO和SpringORM(2017-12-03- 簡單介紹一下SpringWEB模塊。(2017-12-03- 什么是Springbeans?(2017-12-04- Spring框架中的單例bean是線程安全的嗎?(2017-12-04- 什么是?(2017-12-05- 三、 四、 五、 Struts2中的#和%分別是做什么的?(2017-11-30- 六、 什么是Hibernate延遲加載?(2017-12-1- 七、Quartz定時(shí)任 什么是Quartz框架(2017-12-2- 如何Quartz的job執(zhí)行狀態(tài):運(yùn)行中,暫停中,等待中?(2017-12-2- 第八章技 一、 二、消息隊(duì)列 三、 四、并發(fā)相 五、 Nginx和Apache各有什么優(yōu)缺點(diǎn)?(2017-11-24- 六、 七、 簡單介紹一下solr(2017-11-24- 八、 九、 第九章企業(yè)實(shí)戰(zhàn)面試 一、智慧星(2017-11-25- 二、中訊志遠(yuǎn)科技(2017-11-26- 三、騰訊(2016年校招面試題2017-11-29- 四、寶藍(lán)德科技(2017-12-03- 五、智慧流(2017-12-04- 六、某公司(2017-12-05- 七、華勝天成(2017-12-11- 八、誠邁(2017-12-7- 九、訊飛(2017-12-11- 十、泰瑞(2017-12-16- 相對(duì)于JDK1.4,JDK1.5有哪些新特性 JavaScript有哪些優(yōu)缺點(diǎn) 第十章項(xiàng)目業(yè)務(wù)邏輯問 一、傳統(tǒng)項(xiàng)目(2017-12-5- 什么是 Activity工作 大家可以上面的,通過陽哥的實(shí)錄略微感知一下真實(shí)面試的情況,從中學(xué)些面試技巧以便讓自己在未來的面試中能夠得心應(yīng)手,順利拿到自己喜歡的offer。注意bug可以發(fā)送到wangz 一、Java面向?qū)ο竺嫦驅(qū)ο蠖加心男┨匦砸约澳銓?duì)這些特性的理多態(tài)性:多態(tài)性是指允許不同子類型的對(duì)象對(duì)同一消息作出不同的響應(yīng)。簡單的說就是用同樣的對(duì)象調(diào)一切對(duì)A系統(tǒng)來說都是透明的。方法重載(overload)實(shí)現(xiàn)的是編譯時(shí)的多態(tài)性(也稱為前綁定),而方法重寫兩件事:1.方法重寫(子類繼承父類并重寫父類中已有的或抽象的方法);2.對(duì)象造型(用父類型子類型對(duì)注意34權(quán)限修飾符publicprivateprotected,以及不寫(默認(rèn)時(shí)的區(qū)別11-同包子類√√√√√√√×√√××√×××如何理解clone對(duì)為什么要用AAABBAAB求雖然有很多途徑,但實(shí)現(xiàn)clone()方法是其中最簡單,也是最高效的。new一個(gè)對(duì)象的過程和clone一個(gè)對(duì)象的過程區(qū)別clonenewclone(cloneclone對(duì)象的p=p1=(23, (23,“zhang”)??梢园堰@種現(xiàn)象叫做的。上面代碼執(zhí)行完成之后,內(nèi)p=(23,p1=)1.publicCloneable{2.privatintageprivateString(intage,Stringname)this.age==1.publicCloneable{2.privatintageprivateString(intage,Stringname)this.age==}()publicintgetAge(){returnage;}publicStringgetName()returnprotectedObjectclone()throws{returnString類型的,它只是一個(gè),指向一個(gè)真正的String對(duì)象,那么對(duì)它的拷貝有兩種方式:直接將原對(duì)象中的name的值拷貝給新對(duì)象的name字段,或者是根據(jù)原 對(duì)象中的name指向的字符串對(duì)象創(chuàng)建一個(gè)新的 對(duì)象的name字段。這兩種拷貝方式分別叫做 對(duì)象的name的地址值相同,說明兩個(gè)對(duì)象的name都指向同一個(gè)String對(duì)象,也就是淺拷貝,而如果兩個(gè)對(duì)象的name的地址值不同,那么就說明指向不同的String對(duì)象,也就 對(duì)象的時(shí)候,同時(shí)拷貝了name的String對(duì)象,也就是深拷貝。驗(yàn)證代碼如下:p=p1=(23,)Stringresult=p.getName()==clone是淺拷貝的clone是深拷貝的 6.clone是淺拷貝 法,并且在clone方法內(nèi)部,把該對(duì)象的其他對(duì)象也要clone一份,這就要求這個(gè)被的對(duì)象必須也要實(shí)現(xiàn)CloneablecloneBodyHeadBody類,必須在Body類的clone方法中將Head類也要拷貝一份。代碼如下:staticstaticclassBodyimplementspublicHeadpublicBody()publicBody(Headhead){this.head=protectedObjectclone()throwsCloneNotSupportedExceptionBodynewBody=(Body)newBody.head=(Head)return 11.staticclassHeadimplementspublicFacepublicHead()protectedObjectclone()throwsCloneNotSupportedExceptionreturn}publicstaticvoidmain(String[]args)throwsCloneNotSupportedExceptionBodybody=newBody(newHead(newBodybody1=(Body)System.out.println("body==body1:"+(body==body1)System.out.println("body.head==body1.head:"+(body.head==body1.head));body==body1:body.head==body1.head:二、JavaSE語法(2017-11-12-Java有沒有g(shù)oto語句?(2017-11-12-之父ProgrammingLanguage》一書的附錄中給出了一個(gè)Java關(guān)鍵字列表,其中有g(shù)oto和const,但是這兩個(gè)是目前C&和&&的區(qū)別(2017-11-12-true整個(gè)表達(dá)式的值才是true。&&之所以稱為短路運(yùn)算是因?yàn)椋绻?&左邊的表達(dá)式的值是false,右邊的表達(dá)式會(huì)被直接短路掉,不會(huì)進(jìn)行運(yùn)算。很多時(shí)候我們可能都需要用&&而不是&,例如在驗(yàn)證用戶登錄時(shí)判定用戶名不是null而且不是空字符串,應(yīng)username!=null&&!username.equals(""),二者的順序不能交換,更不能用&運(yùn)算符,因?yàn)榈谝粋€(gè)條件如equalsNullPointerException(|)在Java中,如何跳出當(dāng)前的多重嵌套循環(huán)(2017-11-14-在最外層循環(huán)前加一個(gè)標(biāo)記如A,然后用breakA;可以跳出多重循環(huán)(Java中支持帶的break和continue語句,作用有點(diǎn)類似于C和C++中的goto語句,但是就像要避免使用goto一樣,應(yīng)該避免使用帶的break和兩個(gè)對(duì)象值相同(x.equals(ytrue但卻可有不同的hashCode,這句不對(duì),如果兩個(gè)對(duì)象x和y滿足x.equals(ytrue,它們的哈希碼(hashCode)Java對(duì)于eqauls方法和hashCode方法是這樣規(guī)定的:(1)如果兩個(gè)對(duì)象相同(equals方法返回true),那么它們的hashCode值一定要相同;(2)如果兩個(gè)對(duì)象的hashCode相同,它們并不一定相同。當(dāng)然,你未必要按照要求去做,但是如果你違背了上述原則就會(huì)發(fā)現(xiàn)在使用容器時(shí),相同的對(duì)象可以出現(xiàn)在Set集合中,同時(shí)增加新元素關(guān)于equals和hashCode方法,很多Java程序員都知道,但很多人也就是僅僅知道而已,在JoshuaBloch是Java程序員必看書籍,如果你還沒看過,那就趕緊去買一本吧)中是這樣介紹equals方法的。true)、傳遞性(x.equals(yy.equals(ztruex.equals(ztrue)和一致性(當(dāng)x和y的對(duì)象信息沒有被修改時(shí),多次調(diào)用x.equals(y)應(yīng)該得到同樣的返回值),而且對(duì)于任何非null值的x,x.equals(null)必須返回false。實(shí)現(xiàn)高質(zhì)量的equals方法的訣竅包括:1.使用==操作符檢查"參數(shù)是否為這個(gè)對(duì)象的";2.使用instanceof操作符檢查"參數(shù)是否為正確的類型";3.對(duì)于類中的關(guān)鍵屬性,檢查參數(shù)傳入對(duì)象的屬性是否與之相匹配;4.編寫完equals方法后,問自己它是否滿足對(duì)稱性、傳遞性、一致性;5.重寫equals時(shí)總是要重寫hashCode;6.不要將equals方法參數(shù)中的Object對(duì)象替換為其他的類型,在重寫時(shí)掉@Override注解。是否可以繼承String(2017-11-14-繼承String本身就是一個(gè)錯(cuò)誤的行為,對(duì)String類型最好的重用方式是關(guān)聯(lián)關(guān)系(Has-A)和依賴關(guān)系(Use-可返回變化后的結(jié)果,那么這里到值傳遞還是傳遞(7w)是值傳遞。Java值就是對(duì)該對(duì)象的。對(duì)象的屬性可以在被調(diào)用過程中被改變,但對(duì)對(duì)象的改變是不會(huì)影響到調(diào)用者的。C++和C#中可以通過傳或傳輸出參數(shù)來改變傳入的參數(shù)的值。說明:Java中沒有傳實(shí)在是非常的不方便,這一點(diǎn)在Java8中仍然沒有得到改進(jìn),正是如此在Java編寫的代碼中才會(huì)出現(xiàn)大量的Wrapper類(將需要通過方法調(diào)用修改的置于一個(gè)Wrapper類中,再將Wrapper對(duì)象傳入方法),這樣的做法只會(huì)讓代碼變得臃腫,尤其是讓從C和C++為Java程序員的開發(fā)者無法。重載(ooa)和重寫(ordew)。為什么函數(shù)不能根據(jù)返回類型來區(qū)分重載?(2017-11-15-floatmax(intfloatmax(inta,intintmax(inta,intvoidvoidf()intf()若編譯器可根據(jù)上下文(語境)intx=f()中,那么這樣做完全沒有問題。然而,fJavaf()的具體調(diào)char型變量中能不能一個(gè)中文漢字,為什么?(2017-11-16-使用字符在字符集中的編號(hào),這是統(tǒng)一的唯一方法),一個(gè)char類型占2個(gè)字節(jié)(16比特),所以放一個(gè)中補(bǔ)充:使用UnicodeJVMJVM內(nèi)部都是Unicode,當(dāng)這個(gè)字符被JVM(例如存入文件系統(tǒng)中),需要進(jìn)行編碼轉(zhuǎn)換。所以JavaInputStreamReaderOutputStreamReader,這兩個(gè)類是字節(jié)流和字符Cunion(聯(lián)合抽象類 class)和接口(interface)有什么異同?(2017-11-16-接口中的成員全都是public抽象的 )方法是否可同時(shí)是靜態(tài)的(static),是否可同時(shí)是本地方法(native),是否可同時(shí)被synchronized(2017-11-16-闡述靜態(tài)變量和實(shí)例變量的區(qū)別?(2017-11-16-靜態(tài)變量:是被實(shí)例變量:必須依存于某一實(shí)例,需要先創(chuàng)建對(duì)象然后通過對(duì)象才能到它。靜態(tài)變量可以實(shí)現(xiàn)讓多個(gè)對(duì)13equals區(qū)別?(2017-11-22-注意:equals方法不能用于基本數(shù)據(jù)類型的變量,如果沒有對(duì)equals方法進(jìn)行重寫,則比較的是類型的變break和continue的區(qū)別?(2017-11-23-Strings="o";s=s+"world!";這兩行代碼執(zhí)行后,原始的String對(duì)象改,那么使用String來代表字符串的話會(huì)引起很大的內(nèi)存開銷。因?yàn)镾tring對(duì)象建立之后不能再改變,所以對(duì)于每StringStringBuffer相同的字符串,不必每次都new一個(gè)String。例如我們要在構(gòu)造器中對(duì)一個(gè)名叫s的String變量進(jìn)行初始化,publicpublicclassDemoprivateStrings="Initial 1.s=newString("Initial 后者每次都會(huì)調(diào)用構(gòu)造器,生成新對(duì)象,性能低下且內(nèi)存開銷大,并且沒有意義,因?yàn)镾tring對(duì)象不可改變,所以對(duì)于內(nèi)容相同的字符串,只要一個(gè)String對(duì)象來表示就可以了。也就說,多次調(diào)用上面的構(gòu)造器創(chuàng)建多個(gè)對(duì)象,他們的String類型屬性s都指向同一個(gè)對(duì)象。上面的結(jié)論還基于這樣一個(gè)事實(shí):對(duì)于字符串常量,如果內(nèi)容相同,Java認(rèn)為它們代表同一個(gè)String對(duì)象。而類,是它的用途決定的。其實(shí)不只String,很多Java標(biāo)準(zhǔn)類庫中的類都是不可變的。在開發(fā)一個(gè)系統(tǒng)的時(shí)候,我們代表,可能會(huì)造能上的問題。所以Java標(biāo)準(zhǔn)類庫還提供了一個(gè)可變版本,即StringBuffer。三、Java中的多態(tài)Java四、Java的異常處理Java也叫(也叫非強(qiáng)制性異常)RuntimeExceptionjavaCheckedJavaChecked異常都是可以被處理的異常,所以Java程序必須顯式處理Checked異常。如果程序沒有處理Checked異常,該程序在編譯時(shí)就會(huì)發(fā)生錯(cuò)誤無法編譯。這體現(xiàn)了Java機(jī)會(huì)被執(zhí)行。對(duì)Checked異常處理方法有兩種:調(diào)用下面的方法,得到的返回值是什么 1.publicint tryinta=return}catch(Exception{returnreturn3MathException,catchfinallyfinally88行是一個(gè)釋放資源的操作,那么該道題最終返回的結(jié)果就是2。因此上面返回值是3。error和exception的區(qū)別?(2017-2-Exception類又分為運(yùn)行時(shí)異常(RuntimeException)和受檢查的異常(CheckedException),運(yùn)行時(shí)異現(xiàn)這類異常,程序會(huì)終止。而受檢查的異常,要么用try。。。catch捕獲,要么用throws字句拋出,交給它的java異常處理機(jī)制(2017-2-ThrowableErrorException,Error系統(tǒng)繼續(xù)運(yùn)行或者讓軟件死掉,例如,數(shù)組越界(ArrayIndexOutOfBoundsException),空指針異常制用try..catch處理或用throws,所以系統(tǒng)異常也稱為unchecked異常。請(qǐng)寫出你最常見的5個(gè)RuntimeException(2017-11-22-java.lang.NumberFormatException4)java.lang.IndexOutOfBoundsException數(shù)組角標(biāo)越界異常,常見于操作數(shù)組對(duì)象時(shí)發(fā)生。5)java.lang.IllegalArgumentException方法傳遞參數(shù)錯(cuò)誤。java.lang.NoClassDefFoundException未找到類定義錯(cuò)誤。8)SQLExceptionSQL異常,常見于操作數(shù)據(jù)庫時(shí)的SQL語句錯(cuò)誤。9)java.lang.InstantiationException實(shí)例化異常。10) ethodException方法不存在異常。throwthrows區(qū)別(2017-11-22-final、finally、finalize的區(qū)別?(2017-11-23-五、JavaSE常用Math.round(11.5)等于多少?Math.round(-11.5)又等于多少?(2017-11-)的返回值是。四舍五入的原理是在參數(shù)上加switch否能作用在byte,是否能作用在long,是否能作用在上?(2017-11-14-expr也可以是enum類型。開始,length()方法?String沒length()方法?(2017-11-14-lengthlength的屬性。Stringlength()方法。JavaScript通過length屬性得到的,這一點(diǎn)容易和Java。StringStringBuilderStringBuffer2017-11-14-StringStringstr=str=str“bcd”對(duì)象,而“abc”對(duì)象并沒有任何改變,只不過該對(duì)象已因?yàn)樗乃蟹椒ǘ紱]有被synchronized修飾,因此它的效率理論上也比StringBuffer要高。什么情況下用“+”運(yùn)算符進(jìn)行字符串連接比調(diào)用對(duì)象的append方法連接字符串性能更好?(2017-11-14-字符串是JavaJavaString 1.Strings="abc"+"ddd"; 但這樣做真的好嗎?當(dāng)然,這個(gè)問題不能簡單地回答yesorno。要根據(jù)具體情況來定。在Java中提供了一個(gè)類類packagepackagepublicclass{publicstaticvoidmain(String[]{Strings=Stringss="ok"+s+"xyz"+我們首先使用反編譯工具(如jdk帶的javap、或jad)TestSimplePlus反編譯成JavaByteCode,其中的奧秘就一目了然了。在本文將使用jad來反編譯,命令如下:jad-o-a-sd.javapackageimportpublicclass{public{ <Methodvoid }publicstaticvoidmain(String{s= 0 #16<String 1ss=(new 2 #18<Class 3 4 #20<String 5 #22<Methodvoid 7<Method 8<String 9<Method <Method<MethodString <FieldPrintStream<Methodvoid}38.使用無論使用何種方式進(jìn)行字符串連接,實(shí)際上都使用的是StringBuilder。StringBuilderStringBuilder結(jié)構(gòu)比較復(fù)雜,如使用循環(huán)來連接字符串,那么產(chǎn)生的JavaByteCode就會(huì)有很大的區(qū)別。先讓我們看看如下的代packagepackageimportpublicpublicstaticvoidmain(String[]Strings=Randomrand=newRandom();for(inti=0;i<10;i++)s=s+rand.nextInt(1000)+"}}17.packageimportjava.util.Random;public packageimportjava.util.Random;public 0 1<Methodvoid}2publicstaticvoidmain(String{Strings= #16<String Randomrand=new #18<Class #20<Methodvoid for(inti=0;i<10; s=(new9<Class<MethodString<MethodvoidintStringBuilder"StringBuilderString3 <FieldPrintStream<Methodvoid}55.大家可以看到,雖然編譯器將"+"轉(zhuǎn)換成了StringBuilder,但創(chuàng)建StringBuilder對(duì)象的位置卻在for語句內(nèi)部。這就意味著每執(zhí)行一次循環(huán),就會(huì)創(chuàng)建一個(gè)StringBuilder(10個(gè)StringBuilder對(duì)象),雖然Java有回收器,但這個(gè)回收器的工作時(shí)間是不定的。如果不斷產(chǎn)生這樣的,那么仍然會(huì)占用大量的資源。解決這個(gè)問題的方法就是在程序中直接使用StringBuilder來連接字符串,代碼如下:packagepackageimportpublicclass{publicstaticvoidmain(String[]{Strings=Randomrand=newStringBuilderresult=newfor(inti=0;i<10;{result.append("}}19.20.packageimportjava.util.Random;publicclasspublic{01<Methodvoid2}publicstaticvoidmain(String{Strings= #16<String Randomrand=new #18<Class #20<Methodvoid StringBuilderresult=new #21<Class #23<Methodvoid for(inti=0;i<10;4{ #24int #28StringBuilder result.append(" #32" #34StringBuilder } 4 <FieldPrintStream<MethodString<Methodvoid}61.forfor(inti=0;i<10;{result.append("");}forfor(inti=0;i<10;{{result.append(rand.nextInt(1000)+"}for(inti=0;i<10;//* //* //* { #21<Class 如果將上面的代碼在JDK1.4下編譯,必須將StringBuilder改為StringBuffer,而JDK1.4將"+"轉(zhuǎn)換為StringBuffer(JDK1.4StringBuilder)。StringBuffer和StringBuilderStringBuffer是線程安全的,而StringBuilder不是線程安全的。因此,StringBuilder的效率會(huì)更高。請(qǐng)說出下面程序的輸出(2017-11-14-classclassStringEqualTestpublicstaticvoidmain(String[]args)Strings1=Strings2=newStrings3=Strings4=Strings5="Program"+Strings6=s3+System.out.println(s1== System.out.println(s1== System.out.println(s1== System.out.println(s1==ern());System.out.println(s2== 14. 15. String對(duì)象的equals結(jié)果是true),如果常量池中沒有對(duì)應(yīng)的字符串,則該字符串將被添加到常量池中,然后返字符串的+操作其本質(zhì)是創(chuàng)建了StringBuilder對(duì)象進(jìn)行append操作,然后將拼接后的StringBuilder對(duì)象用toString方法處理成String對(duì)象,這一點(diǎn)可以用javap-cStringEqualTest.class命令獲得class文件對(duì)應(yīng)的JVM字節(jié)碼指令就可以看出來。Java中的日期和時(shí)間(2017-11-19-如何取得年月日、小時(shí)分鐘秒?(2017-11-19-publicpublicclassDateTimeTestpublicstaticvoidmain(String[]args)Calendarcal=System.out.println(cal.get(Calendar.MONTH));//0-//JavaLocalDateTimedt=System.out.println(dt.getMonthValue());//1-97011000秒到現(xiàn)在的毫秒數(shù)?(2017-11-19-Calendar.getInstance().getTimeInMillisCalendar.getInstance().getTimeInMillisSystem.currentTimeMillis();//第二種方//Java式如何取得某月的最后一天?(2017-11-19-Calendarc=c.set(Calendar.DAY_OF_MONTH,1);//設(shè)置為1號(hào),Stringfirst=Calendarca=ca.set(Calendar.DAY_OF_MONTH, Stringlast=//JavaLocalDatetoday=LocalDatefirstday=LocalDatelastDaySystem.out.println("本月的第一天System.out.println("本月的最后一天如何格式化日期?(2017-11-19-importimportimportimportimportimportclass{17.publicstaticvoidmain(String[]args)SimpleDateFormatoldFormatter=newSimpleDateFormat("yyyy/MM/dd");Datedate1=newDate();//JavaLocalDatedate2=LocalDate.now();}其中包括LocalDate、LocalTime、LocalDateTime、Clock、Instant等類,這些的類的設(shè)計(jì)都使用了不變模式,因打印昨天的當(dāng)前時(shí)刻?(2017-11-19-importimportclassYesterdayCurrentpublicstaticvoidmain(String[]Calendarcal=}8.8.//java-importclassYesterdayCurrentpublicstaticvoidmain(String[]args)LocalDateTimetoday=LocalDateTimeyesterday= 19.Java8日期特性(2017-12-3-wl)Java8日期/時(shí)間特性是實(shí)用操作:所有新的日期/時(shí)間API是工作在Java8日期/時(shí)間API解java.timeJavaAPILocalDate, java.time.format包:這個(gè)含能夠格式化和解析日期時(shí)間對(duì)象的類,在絕大多數(shù)情況下,我們不應(yīng)該直接使用它們,因?yàn)閖ava.time包中相應(yīng)的類已經(jīng)提供了格式化和解析的方法。Java8日期/時(shí)間常用LocalDatenow()方法提供了重載方法,我們可以傳入ZoneId來獲得指定時(shí)區(qū)的日期。該類提供與java.sql.Datepackagepackageimportimportjava.time.Month;LocalDate@authorpublicclassLocalDateExamplepublicstaticvoidmain(String[]args)//CurrentLocalDatetoday=LocalDate.now();//CreatingLocalDatebyprovidinginputLocalDatefirstDay_2014=LocalDate.of(2014,Month.JANUARY,1);System.out.println("SpecificDate="+firstDay_2014);//Trycreatingdatebyprovidinginvalid//LocalDatefeb29_2014=LocalDate.of(2014,Month.FEBRUARY,//Exceptioninthread"main"http://Invaliddate'February29'as'2014'isnotaleap//Currentdatein"Asia/Kolkata",youcangetitfromZoneIdjavadocLocalDatetodayKolkata=LocalDate.now(ZoneId.of("Asia/Kolkata"));System.out.println("CurrentDateinIST="+todayKolkata);//java.time.zone.ZoneRulesException:Unknowntime-zoneID://LocalDatetodayIST=//Gettingdatefromthebasedatei.e01/01/1970LocalDatedateFromBase=LocalDate.ofEpochDay(365);System.out.println("365thdayfrombasedate=LocalDatehundredDay2014=LocalDate.ofYearDay(2014,100);System.out.println("100thdayof2014="+hundredDay2014);}}SpecificDate=2014-01-01CurrentSpecificDate=2014-01-01CurrentDateinIST=2014-04-29365thdayfrombasedate=1971-01-100thdayof2014=2014-04-LocalTime是一個(gè)不可變的類,它的實(shí)例代表一個(gè)符合人類可讀格式的時(shí)間,默認(rèn)格式是hh:mm:ss.zzz。像packageimportjava.time.ZoneId;*LocalTimepublicclassLocalTimeExamplepublicstaticvoidmain(String[]args)//CurrentLocalTimetime=LocalTime.now();//CreatingLocalTimebyprovidinginputargumentsLocalTimespecificTime=LocalTime.of(12,20,25,40);System.out.println("SpecificTimeofDay="+specificTime);//Trycreatingtimebyprovidinginvalid//LocalTimeinvalidTime=//Exceptioninthread"main"http://InvalidvalueforHourOfDay(validvalues0-23)://Currentdatein"Asia/Kolkata",youcangetitfromZoneIdjavadocLocalTimetimeKolkata=LocalTime.now(ZoneId.of("Asia/Kolkata"));System.out.println("CurrentTimeinIST="+timeKolkata);//java.time.zone.ZoneRulesException:Unknowntime-zoneID://LocalTimetodayIST=//Gettingdatefromthebasedatei.eLocalTimespecificSecondTime=LocalTime.ofSecondOfDay(10000);System.out.println("10000thLocalTimespecificSecondTime=LocalTime.ofSecondOfDay(10000);System.out.println("10000thsecondtime=}}CurrentTime=15:51:45.240SpecificTimeofDay=12:20:25.CurrentTimeinIST=04:21:45.27610000thsecondtime=LocalDateTime是一個(gè)不可變的日期-時(shí)間對(duì)象,它表示一組日期-時(shí)間,默認(rèn)格式是yyyy-MM-dd-HH-mm-packagepackageimportjava.time.LocalDate;importjava.time.LocalTime;importjava.time.Month;importjava.time.ZoneId;publicclassLocalDateTimeExamplepublicstaticvoidmain(String[]args)//CurrentLocalDateTimetoday=LocalDateTime.now();//CurrentDateusingLocalDateandtoday=LocalDateTime.of(LocalDate.now(),LocalTime.now());System.out.println("CurrentDateTime="+today);//CreatingLocalDateTimebyprovidinginputLocalDateTimespecificDate=LocalDateTime.of(2014,Month.JANUARY,1,10,10,System.out.println("SpecificSystem.out.println("Specific//Trycreatingdatebyprovidinginvalid//LocalDateTimefeb29_2014=LocalDateTime.of(2014,Month.FEBRUARY,28,//Exceptioninthread"main"http://InvalidvalueforHourOfDay(validvalues0-23)://Currentdatein"Asia/Kolkata",youcangetitfromZoneIdjavadocLocalDateTimetodayKolkata=LocalDateTime.now(ZoneId.of("Asia/Kolkata"));System.out.println("CurrentDateinIST="+todayKolkata);//java.time.zone.ZoneRulesException:Unknowntime-zoneID://LocalDateTimetodayIST=//Gettingdatefromthebasedatei.eLocalDateTimedateFromBase=LocalDateTime.ofEpochSecond(10000,0,ZoneOffset.UTC);System.out.println("10000thsecondtimefrom01/01/1970="+dateFromBase);}}CurrentDateTime=2014-04-28T16:00:49.455CurrentDateTime=2014-04-28T16:00:49.493SpecificDate=2014-01-01T10:10:30CurrentDateinIST=2014-04-10000thsecondtimefrom01/01/1970=1970-01-packagepackageimportjava.time.Instant;publicpublicclassInstantExamplepublicstaticvoidmain(String[]args)//CurrentInstanttimestamp=Instant.now();System.out.println("CurrentTimestamp="+timestamp);//InstantfromInstantspecificTime=Instant.ofEpo System.out.println("SpecificTime="+specificTime);//DurationDurationthirtyDay=Duration.ofDays(30);}}CurrentTimestamp=2014-04-28T23:20:08.489ZSpecificTime=2014-04-28T23:20:08.489ZAPI工packageimportpackageimportjava.time.LocalDate;importjava.time.LocalTime;importjava.time.Period;importpublicclassDateAPIUtilitiespublicstaticvoidmain(String[]args)LocalDatetoday=//GettheYear,checkifit'sleapSystem.out.println("Year"+today.getYear()+"isLeapYear?paretwoLocalDateforbeforeand//CreateLocalDateTimefromSystem.out.println("Current//plusandminusSystem.out.println("10daysaftertodaywillbe"+today.plusDays(10));System.out.println("3weeksaftertodaywillbe"+today.plusWeeks(3));System.out.println("20monthsaftertodaywillbe"+today.plusMonths(20));System.out.println("10daysbeforetodaywillbe"+today.minusDays(10));System.out.println("3weeksbeforetodaywillbe"+today.minusWeeks(3));System.out.println("20monthsbeforetodaywillbe"+today.minusMonths(20));//TemporaladjustersforadjustingthedatesSystem.out.println("Firstdateofthismonth="+today.LocalDatelastDayOfYear=today.with(TemporalAdjusters.lastDayOfYear());System.out.println("Lastdateofthisyear="+lastDayOfYear);Periodperiod=today.until(lastDayOfYear);System.out.println("PeriodFormat="+period);System.out.println("Monthsremainingintheyear=}}Year2014isLeapYear?falseTodayisbefore01/01/2015?true10daysaftertodaywillbe2014-05-3weeksaftertodaywillbe2014-05-20monthsaftertodaywillbe2015-12-10daysbeforetodaywillbe2014-04-3weeksbeforetodaywillbe2014-04-20monthsbeforetodaywillbe2012-08-28Firstdateofthismonth=2014-04-01Lastdateofthisyear=2014-12-31PeriodFormat=P8M3DMonthsremainingintheyear=解析和格式化packagecom.journaldev.java8.time;importjava.time.Instant;importjava.time.LocalDate;importpublicclassDateParseFormatExamplepublicstaticvoidmain(String[]args)//FormatLocalDatedate=//defaultSystem.out.println("Defaultformatof//specificformatLocalDateTimedateTime=//defaultSystem.out.println("Defaultformatof//specificformatInstanttimestamp=//defaultSystem.out.println("Defaultformatof//ParseLocalDateTimedt=LocalDateTime.parse("27::Apr::201421::39::48",DateTimeFormatter.ofPattern("d::MMM::uuuuHH::mm::ss"));System.out.println("Defaultformatafterparsing=}}DefaultformatofLocalDate=2014-04-

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論