




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Java時(shí)間:2012-06-02至今可以有多個(gè)類,但是只能有一個(gè)publicpublic必須與文件名相一致。Eg:classcar(){IntStringVoid}}true果才為truefalse,則結(jié)果為false.if(str!=null&&!str.equals(""))表達(dá)式,當(dāng)str為null,后面的表達(dá)式不回執(zhí)行,所以不會(huì)出現(xiàn)進(jìn)行&運(yùn)算,來獲取該整數(shù)的最低4bit。class{publicstaticvoidmain(String[]{intclass{publicstaticvoidmain(String[]{int//==右邊運(yùn)算,x++==1,表示x與1自加1。此時(shí)因?yàn)檫B接邏輯運(yùn)算左右兩邊的是||,左邊已經(jīng)為真,右邊不再參與運(yùn)算。所以最后結(jié)果是x=2;y=0}}邊不參與運(yùn)算?;蝾A(yù)算,一邊為真就為真,兩邊為假才為假,雙或:與單或原則是一樣的,區(qū)別在于首先來復(fù)習(xí)下循環(huán)的知識(shí):循環(huán)有最常見的三種whilefordowhileWhile環(huán):執(zhí)行語}執(zhí)行語}特點(diǎn):先執(zhí)行循環(huán)體,在判斷條件,條件滿足繼續(xù)執(zhí)行循環(huán)體,與whilefor(int{}for(int{}inty=0;{}這是變量的作用域的問題,for定義在forForwhile。擴(kuò)展知識(shí):breakcontinueBreak{{}}{Breakw;//結(jié)束外循環(huán)代表著整個(gè)循環(huán)結(jié)束{Breakw;//結(jié)束外循環(huán)代表著整個(gè)循環(huán)結(jié)束}}{}2、執(zhí)行判斷語句if(x%2==0)0%2==04、1%2==0x=1;執(zhí)行5、執(zhí)行判斷語句x=2<11;滿足條件,執(zhí)行6、2%2==0?不滿足,執(zhí)行continue執(zhí)行For(inti=0;i<10;i++){For(inty=0;y<10;y++){Break}}解法一、可以定義一個(gè)標(biāo)號(hào),然后在里層循環(huán)體的代碼中使用帶有標(biāo)號(hào)For(inti=0;i<10;i++){For(inty=0;y<10;y++){Break}}intarr[][]=intarr[][]=booleanfound=for(inti=0;i<arr.length&&{for(int{System.out.println(“i=”System.out.println(“i=”+i+“,j=”+j);if(arr[i][j]==5){found=true;}}}publicclass{publicstaticvoidmain(String{inti=0,j=5;tp:for(;;){{if(i>j--break}break才執(zhí)行結(jié)束外循環(huán),此時(shí)應(yīng)該為i=1>0;j=0;jj}System.out.println("i="+i+",j="+}}考點(diǎn):無限循環(huán)的簡寫格式,for以及break環(huán)。i=1;j=-是可以的,顯然long和String類型都不符合switch的語定,并且不能隱式的轉(zhuǎn)換成int類型,所以它們不能作用于switch中。5、shorts1=1;s1=s1+1Shorts1=1;s1+=1對(duì)于shorts1=1;s1=s1+1,由于s1+1果是int再給short型的s1誤。對(duì)于shorts1=1;s1+=1是java符,java中的就不能這個(gè)特殊的漢字,unicode編碼占兩個(gè)字節(jié),所以char類型的變量也是占用兩個(gè)字節(jié)。因?yàn)閷⒁粋€(gè)數(shù)左移n相當(dāng)于乘以了2n乘以8其左3而位運(yùn)算cpu所以2以8有效率的方法就是2<<3首先final使用final關(guān)鍵字修飾一個(gè)變量時(shí),是指變量不能變,變量所指向的對(duì)象中的內(nèi)容還是可以FinalStringBuffera=newA=newPublicvoidmethod(finalStringBuffer}StringBuilderStringBuffer全的,所以StringBuilder率較StringBufferpackagepackage@authorpublicclassStringBuilderDemopublicstaticvoidmain(String[]args){StringBuilders1=newStringBuilder(" StringBuilders2=newStringBuilder("java");}privatestaticvoidmethod(StringBuilders1,StringBuilders2){}}行代碼,s1.append(s2)說明了將s2在內(nèi)存中的值添加到s1中這時(shí)s1在內(nèi)存中的值為ojava,s1=s2說的是將s2在內(nèi)存中的地址值,賦值給s1,當(dāng)主函數(shù)中調(diào)用method方法時(shí),s1的內(nèi)存地址值和s2的內(nèi)存地址是一樣的,此時(shí)s1和s2都指向s2空間,此時(shí)值都為java,方法執(zhí)行完后methodStringa=newString("foo");Stringb=new象中的內(nèi)容是相同的,所表達(dá)式a.equals(b)將返回truepackagepackage@authorpublicclassStringDemo1publicstaticvoidmain(String[]args){Stringa=newString("foo");Stringb=newString("foo");}}記住字符串的比較基本上都是使用equalsBooleanequals(Objecto){Returnthis=o;}如果一個(gè)類沒有自定定義equals將繼承ObjectObject的Booleanequals(Objecto){Returnthis=o;}equals的。publicclass{publicstaticintstaticVar=0;spublicintinstanceVar=0;publicVariantTest(){publicclass{publicstaticintstaticVar=0;spublicintinstanceVar=0;publicVariantTest(){}}時(shí),可能還沒有創(chuàng)建人和實(shí)例對(duì)象,如果從一個(gè)static方法發(fā)出對(duì)非static方法的調(diào)動(dòng),那個(gè)非static1、int0、而Integer值為null,即Integer0別,int考試和考試成績?yōu)?別.則只能使用Integer,在jspInteger值是nullel在文本框中顯示時(shí),值為空白字符串,而int默認(rèn)值為0,所以el結(jié)果為0int作為web型。12Math.ceil(-11.3)的結(jié)果是-11.floor的英文意思是地板,該方法就表示向下取整所以,Math.floor(11.6)的結(jié)果為11.Math.floor(-11.6)的結(jié)果是-12,round是四舍五入的意思,算法是Math.floor(x+0.5)即將原來的數(shù)字加0.5后再向下取整,所以Math.round(11.5)的結(jié)果為intxintx=return 修飾符,則表示friendly。 當(dāng)前類同一package子孫類其他package√√√√√√√×√√××√×××1、在使用重載時(shí)只能通過不同的參數(shù)樣式,比如不同的參數(shù)類型,不同的參數(shù)個(gè)數(shù),不同的參數(shù)能為fun(int,int))2、不能通過權(quán)限,返回類型、拋出異常進(jìn)行重載3、方法的異常類型和數(shù)目不會(huì)對(duì)重載造成影響4、對(duì)于集成來說,如果某一個(gè)方法在父類中是權(quán)限是private,那就不能再子類對(duì)其進(jìn)行重?cái)?shù)列表完全一樣,是否可以讓它們的返回值不同來實(shí)現(xiàn)重載Overload。這樣不可以。因?yàn)橛袝r(shí)候調(diào)用一個(gè)publicclassDemo1publicpublicclassDemo1publicstaticvoidmain(String[]args){doublex=2;}publicstaticvoidtest1(inta){}publicstaticvoidtest1(charc){}publicstaticvoidtest1(doubled){}}1、由于會(huì)記錄用戶的信息在硬盤中存在的安全問題,以及技術(shù)自身存在容量的限制條件比如說當(dāng)實(shí)現(xiàn)購物車添加很多商品的時(shí)候用是存在著嚴(yán)重的不足的這時(shí)給購物車起一個(gè)唯一的名3、session當(dāng)程序需要為某個(gè)可斷的請(qǐng)求創(chuàng)建一個(gè)sessionservlet車這個(gè)客戶端的請(qǐng)求里是否客戶端創(chuàng)建過session,servlet容器就會(huì)按照session把這個(gè)session檢索出來使用(如果檢索不到,可能會(huì)新創(chuàng)建一個(gè))如果客戶端請(qǐng)求不包含sessionid,則為此客戶端創(chuàng)建一個(gè)session并生成一個(gè)與此這個(gè)sessionid存。4、使用在服務(wù)器端創(chuàng)建*創(chuàng)建session*創(chuàng)建sessionHttpSession*創(chuàng)建sessionHttpSesssion*創(chuàng)建session(空參數(shù)的方法等價(jià)true)HttpSessionsession=request.getSession();當(dāng)不斷的在客戶端服務(wù)器時(shí),他會(huì)不斷的創(chuàng)建session,如果不控務(wù)器端的session對(duì)象,那么當(dāng)session清除掉服務(wù)器端的session三 2 就是不活動(dòng)的,系統(tǒng)默認(rèn)的是3分鐘,過3分鐘后session會(huì)自動(dòng)。注意:它是以秒為單位的。SetMaxInactiveInterval的優(yōu)先級(jí)是最高的,如果setMaxIncativeInterval沒有設(shè)置,則默session還提供了利用URL重寫實(shí)現(xiàn)sessionURL數(shù)?;蛘哧P(guān)閉了功能的情況下,web服務(wù)器還要能夠與瀏覽器實(shí)現(xiàn)有狀態(tài)的會(huì)話,就必須對(duì)所httpServletResponseURL方out.println("<ahref="+response.encodeURL("./loginServlet")+">重新登錄 ,它就不加這個(gè)參數(shù),以后都在開發(fā)過程中要加入這個(gè)21、hasaisaHasaIsa系的鎖是任意對(duì)象,同步函數(shù)使用的鎖是this,對(duì)靜態(tài)同步方法使用的鎖是該類的class鎖樣就需要對(duì)任務(wù)對(duì)象進(jìn)行單獨(dú)的封裝和描述程間通信中出現(xiàn)了等待喚醒機(jī)制通過wait()notify()符合面向?qū)ο蟮乃枷?,將鎖這種事物封裝成了對(duì)象condition替代了Object類中監(jiān)視器方法wait23、classLoaderJVM里有多個(gè)類加載,每個(gè)類加載可以負(fù)責(zé)加載特定位置的類,例如bootstrap類負(fù)載加載jre/lib/rt.jar的類,我們平時(shí)用的jdk中的類都位于rt.jar中,extclassloader負(fù)責(zé)加載jar/lib/ext/*.jarappclassloader負(fù)責(zé)加載classpath指定的或jarbootstrap之外,其他的類加載器本身也都是javaclassloader器運(yùn)行其init方法,請(qǐng)求到達(dá)時(shí)運(yùn)行其service方法,service方法自動(dòng)派遣運(yùn)行域請(qǐng)求對(duì)象的doXXX方般不會(huì)銷毀,而CGI完成后就要銷毀,效率低于servlet。用關(guān)鍵字修飾的類稱之為抽象類,它沒有方法體,所以它不能被實(shí)例化,抽象類必須由其 PublicintcompareTo(Object PublicintcompareTo(Object Inttemp=this.age-Return Returntemp=-0?this,.age-}}}TreeSetts=newTreeSet(newComparatorByName()); torit=ts.i TreeSetts=newTreeSet(newComparatorByName()); torit=ts.i }ComparatorcomparatorcompareClassComparatorByNameimplementsComparator{Publicintcompare(Objecto1,Object Inttemp=p1.getName().compareTo(p2.getName());Returntemp==0?p1.getAge()-p2.getAge():temp;}}是設(shè)計(jì)分層設(shè)計(jì)的,這時(shí)候不需要設(shè)計(jì)業(yè)務(wù)和數(shù)據(jù)的代碼,只需要編寫一條web界面可以了。對(duì)象經(jīng)常要通過io們常用的做法就是把對(duì)象的狀態(tài)數(shù)據(jù)用某種Objectobj=hashCode和equals二者結(jié)合使用常用來判斷兩個(gè)對(duì)象是否相等,但是它們是有區(qū)別的,一般來將equals象是否相等,可以重寫equals方法然后在代碼種調(diào)用,就可以判斷它們是都相等了,簡單來講,equals方法主要是用來判斷從表面上看或者從內(nèi)容上看,兩個(gè)對(duì)象是不是相等,例如:有個(gè)student類,屬性只有和,那么我們可以認(rèn)為只要和hashCode方法一般用戶不會(huì)去調(diào)用,比如在hashMap種,由于key是不可以重復(fù)的,它在判斷key是不是重復(fù)的時(shí)候就判斷了hashCode個(gè)方法,而且也用到了equals方法,這里不能說equals法和對(duì)象相等的話,那么hashCode的方法也要返回的hashCode值加上的hashCode值,這樣從邏輯上SOA:serviceorientedarchitecture面向服務(wù)的體系結(jié)構(gòu),是一個(gè)組件模型,它將應(yīng)用程序的不同功能packagepackage*@createDate:2012-6-publicclassTestpublicstaticvoidmain(String[]args)Stringstr="12abf";intlenstr.length();intsumfor(inti=0;i<len;i++){charc=str.charAt(len-1-i);intn=Character.digit(c,16);}}}packagecn.xuzheng.test;packagecn.xuzheng.test;import*@createDate:2012-6-publicclassTest2publicstaticvoidmain(String[]args){Stringstr="xadws";char[]arr1=char[]arr2=Arrays.copyOf(arr1,arr1.length);for(inti=0;i<arr1.length;i++){for(intj=i+1;j<arr2.length;j++){}}}}構(gòu)造器Constructor能重寫override,但可以被重載main接口可以繼承接口,抽象類可以實(shí)現(xiàn)接口,抽象類可以繼承具體類,抽象類可以有靜態(tài)main法 1在一模塊,就是個(gè)中,性用量義,為用法進(jìn)定義方可以接同一個(gè)對(duì)中的性,常況下變和這個(gè)量方法在一,將個(gè)類的員變?nèi)x成私有,只這個(gè)自的方才以到這成變量這就基本實(shí)現(xiàn)象封裝就容易找39、classinterface含有abstracetclass即為抽象類,類不能創(chuàng)建的實(shí)例對(duì)象,含有方法的類必須定義為class,classclass抽父類總的所有抽象方法,那么子類也必須定義為類型。public類型,接口中的乘員變量類型默認(rèn)為publicstaticfinal。3、抽象類中可以包含非抽象的普通方法,接口中的所有方法必須是抽象的,不能有非抽象的普法 類型可以是publicprotected和默認(rèn)類型,但接口中的抽象方法只是public類型的,并且默認(rèn)即為 接口中定義的變量只能是publicstaticfinal且默認(rèn)即為publicstaticfinal型。 classBaseServletextends{publicfinalvoidservice(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOExcetion,ServletException{{{}
catch(Excetpion{}}} voiddoService(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOExcetion,ServletException;}publicclassMyServlet1extends{protectedvoiddoService(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOExcetion,ServletException{}}40 的method是否可同時(shí)是static是否可同時(shí)是native,是否同時(shí)是上關(guān)系他不能是抽象的,不能與混用。例如:FileOutputStream交道,底層的實(shí)現(xiàn)用的是操作系統(tǒng)相關(guān)的api實(shí)現(xiàn)windows用c查看jdk的源代碼以發(fā)現(xiàn)FileOUtStream的openPrivatenativevoidopen(Stringname)throws如果我們要用java調(diào)用別人寫的c語言函數(shù),我們是無法直接調(diào)用的,我們需要按照java的要求寫一個(gè)c的這個(gè)ccc數(shù)是按java的要求來寫的,我們這個(gè)c語言函數(shù)就可以與java對(duì)接上,java那邊的對(duì)接方式就是定義出與我們這個(gè)c函數(shù)相對(duì)應(yīng)的方法,java中對(duì)應(yīng)的方法不需要寫具體的代碼,但需要面native。關(guān)于synchronized與合用的問題,我覺得也不行,因?yàn)樵谖規(guī)啄甑膶W(xué)習(xí)和開發(fā)中,從來沒見到過這種情況,并且我覺得synchronized該是作用在一個(gè)具體的方法上才有意義。而且,方法上的synchronized對(duì)象是this,而抽象方法上無法確定this41、什么是內(nèi)部類?StaticNestedclassInnerClasspublicclass{intout_x=0;publicvoidmethod(){Inner1inner1=newpublicclass {public{out_x=}}Inner2inner2=publicclass{intout_x=0;publicvoidmethod(){Inner1inner1=newpublicclass {public{out_x=}}Inner2inner2=new}publicclass {}}況下,我們也可以再外面創(chuàng)建內(nèi)部類的實(shí)例對(duì)象,創(chuàng)建內(nèi)部類的實(shí)例對(duì)象時(shí),一定要先創(chuàng)建外部類的實(shí)Outouter=newOuter.Innerinner1=類的前面可以使用final或修飾符,這種內(nèi)部類對(duì)其他類是不可見的其他類無法這種內(nèi)部內(nèi)部類可以方法體重的局部變量,但是該局部變量前必須加final修飾符。三者的共同點(diǎn):這三個(gè)類都是實(shí)現(xiàn)了list接口,ArrayList和vector都是有序的集合,即在這兩個(gè)值,線程同步安全但是效率低,遍歷集合類的元素采用的枚舉(enumeration)前兩者采用的是迭代器。HashMap和Hashtable及treeMaphashMapHashtable現(xiàn))它們都完成了map下:HashMap:底層是哈希表數(shù)據(jù)結(jié)構(gòu),該集合是不同步的,允許使nullnull,JDK1.2的,Hashtablenull和nullJDK1.0現(xiàn)packagepackage考查ifelseifelse語@authorpublicclassTest1publicstaticvoidmain(String[]args){booleana=true;booleanb=false;booleanc=true;elseSystem.out.println("nos2");elseif(a&&(b=c))System.out.println("s3");elseSystem.out.println("s4");}}GC是收集的意思(GabageCollection),內(nèi)存處理是編程人員容易出現(xiàn)問題的地方,忘記或者錯(cuò)誤的內(nèi)存回收會(huì)導(dǎo)致程序或者系統(tǒng)的不穩(wěn)定甚至,java提供的GC功能可以自動(dòng)檢測(cè)對(duì)象是否超過作用域從而達(dá)到自動(dòng)回收內(nèi)存的目的,java法。語言中一個(gè)顯著的特點(diǎn)就是引入回收機(jī)制,使c++程序員最頭疼的內(nèi)存管理的問題就它使得java程序員在編寫程序的時(shí)候不再需要考慮內(nèi)存管理,由于有個(gè)回收機(jī)制,java通知GC但是java不保證GC行。被定義在$CATALINA_HOME/conf/web.xml被定義在$CATALINA_HOME/conf/web.xml配置文件中定義的東西會(huì)在tomcat Jsp:includeJsp:includeJsp:useBean尋找或者實(shí)例化一個(gè)javaBeanJsp:setProperty設(shè)置javaBeanJsp:getProperty輸出某個(gè)javaBean52、介紹一下Collection框架的結(jié)構(gòu)變集合框架的最頂層就是CollectionListsetList:它是有序的集合容器(存入的順序和取出的順序是一致的)因?yàn)樵撟芋w系的中的元素都具有包含了增刪改查修改等特有方法(add,remove,set()修改。繼承它的子類有ArrayList、LinkedList、Vector類復(fù)同步用的枚舉(enumeration)器。Set:它是無序、不重復(fù)、該接口中的方法和Collection繼承它的子類有HashSetTreeSet根據(jù)元素的兩個(gè)方法來完成的,一個(gè)是HashCode、一個(gè)是equals只有當(dāng)hashCode出哈希值相同時(shí),會(huì)再次判斷兩個(gè)元素的equals方法是否為true,如果是true說明兩個(gè)元素相同,不,所以往hashSet集合中自定義對(duì)象時(shí),要覆蓋hashCode,equals方法,通過自定義對(duì)象具備的特有數(shù)據(jù)定義hashCode、equalstreeetCollections靜態(tài)方法實(shí)現(xiàn)對(duì)各種集合的搜索、排序、線VectornewVector=newVector();For(inti=VectornewVector=newVector();For(inti=0;i<vector.size();i++){Objectobj=vector.get(i);New}}還有一種簡單的方式:HashSetsetnew基本數(shù)據(jù)類型包括了byteintcharlongfloatdouble和空間,我們?cè)撚肧tringBuffer。String被設(shè)計(jì)成不可變類,所以它的對(duì)象都是不可變的,在這段代碼中,s一個(gè)String對(duì)象,內(nèi)容是o然后我們對(duì)s進(jìn)行了+操作,那么s所指向的那個(gè)對(duì)象是沒有發(fā)生改變的,這時(shí)s不指向原來那個(gè)對(duì)象了,而是指向了另一個(gè)String對(duì)象,內(nèi)容為oworld原來那個(gè)對(duì)象還存在內(nèi)存之中,只是s這個(gè)變量不再指向它了。見String大的String能再至String只是Stringjava能上的問題,所以java本,即StringBuffer.58、StringsnewString('xyzStringObject緩沖區(qū)中的哪一個(gè),newString個(gè)常量xyz建出一個(gè)新String就用過xyz,這句代表就不會(huì)創(chuàng)建xyz拿。60、String和StringBuffer字符數(shù)據(jù),String而StringBuffer容可以被修改的字符串,當(dāng)你知道字符數(shù)據(jù)要改變的時(shí)候你就可以使用StringBuffer,另外String實(shí)現(xiàn)了equals方法,newnewStringBuffer(‘a(chǎn)bc’).equals(newStringBuffer(‘a(chǎn)bc’))的結(jié)果為false.StringBuffersb=newStringBuffer();for(intiStringBuffersb=newStringBuffer();for(inti=0;i<100;i++){}對(duì)Stringstr=newStringstr=newfor(inti=0;i<100;i++){str=str+i;}}方法,所以,將StringBuffer對(duì)象進(jìn)java集合類中時(shí)會(huì)出現(xiàn)問題61、下面的這條語句一共創(chuàng)建了多少個(gè)對(duì)象:Stringsa”+”b”+”c”+”d”;Strings1=”a”;Strings2=s1+”b”;Strings3=“a”+”b”;第一條語句的打印結(jié)果為false,第二條語句的結(jié)果為true,這說明javac編譯可以對(duì)字符串常量直接62、classinterface含有class類不能創(chuàng)建的實(shí)例對(duì)象,含有f法4、抽象類中的抽象方法的類型可以是publicprotected和默認(rèn)類型,但是接口中的抽象方法只能是public類型的,并且默認(rèn)即為public 接口中定義的只能是publicstaticfinal認(rèn)為publicstaticfinal型。{classBaseServletextendspublicfinalvoidservice(HttpServletRequestrequest,{classBaseServletextendspublicfinalvoidservice(HttpServletRequestrequest,response)response)throws{ {{}catch(Excetpion{}}} HttpServletResponseresponse)throws }publicclassMyServlet1extends{protectedvoiddoService(HttpServletRequestrequest,HttpServletResponseresponse)throws{}}63 上關(guān)系也不能是抽象的,不能與混用,例如,F(xiàn)ileOutStream道,底層的實(shí)現(xiàn)用的操作系統(tǒng)相關(guān)的apiwindows用c查看jdk以發(fā)現(xiàn)fileOUtStream的openPrivatenativevoidopen(Stringname)throws如果我們要用java調(diào)動(dòng)別人寫的c語言函數(shù),我們是無法直接調(diào)用的,我們需要按照java的要求寫一個(gè)c語言的函數(shù),又我們的這個(gè)c語言函數(shù)去調(diào)用別人的c函數(shù),由于我們的c是按java的要數(shù)相對(duì)應(yīng)的方法,java中對(duì)應(yīng)的方法不需要些具體的代碼,但是需要再前面native.法確定thisclass{staticintx;staticclassInnerclass{staticintx;staticclassInner{void{}}}方法的實(shí)現(xiàn)的類型都應(yīng)該是finalJDK中的System,String,StringBuffer等都是這樣中類型的基本66、try{}里面有一個(gè)return語句,那么緊跟在這個(gè)try子句后的finally{}里的code會(huì)不會(huì)被執(zhí)行,return部變量,局部變量必須定義成finalFinalize是Object類的一個(gè)方法,在回收器執(zhí)行的時(shí)候會(huì)調(diào)用被回收對(duì)象的方法,可以覆蓋此方法提供收集時(shí)的其他資源回收,例如關(guān)閉文件等,JVM不保證方法總被調(diào)用。是一種常見的運(yùn)行錯(cuò)誤,java編譯器要求方法必須拋出可能發(fā)生的非運(yùn)行時(shí)一場(chǎng),但是并不要求必須異常是指java程序運(yùn)行時(shí)(非編譯)所發(fā)生的情況或者錯(cuò)誤,與現(xiàn)實(shí)生活中的很相似,現(xiàn)Java異常進(jìn)行了分類,不同類型的異常分別用不同的java類表示,所有異常的根類為71runtimeClassCastException、NoSuchElementException、NullPointerException、ArithmeticException、Trycatch:對(duì)異常的針對(duì)性處理方式:Catchcatch表異常沒有被處理過,故該異常是檢測(cè)時(shí)異可以在try處理方式有兩種:try和一個(gè)try多個(gè)catchCatchprintStackTrace語句當(dāng)捕獲到異常,本功能處理不了時(shí),可以繼續(xù)在catch拋出。{{thrownew}catch(AException{throw}1、定義功能時(shí),功能中有什么問題,都應(yīng)該進(jìn)行預(yù)先處理比如trycatch如果處理不了,應(yīng)該通throws拋出,讓調(diào)用者進(jìn)行處理2、調(diào)用了拋出異常的功能的函數(shù),應(yīng)該進(jìn)行處理,如果使trycatch能上拋出幾個(gè)異常,就應(yīng)該對(duì)應(yīng)幾個(gè)catch個(gè)異常進(jìn)行針對(duì)性的處理。3、如果出現(xiàn)多個(gè)catch中存在的父類異常的catch,那么這個(gè)catch一定放在catch的最后,通常這運(yùn)行時(shí)異常,那么函數(shù)上是可以不用throws的。子類中的方法發(fā)生了異常,那么子類只能trycatch不能用throws,只能try,不能拋,入股非要在函數(shù)內(nèi)拋出異常,那么只能拋出RuntimeException,因?yàn)檫@種異常不用在函數(shù)中。應(yīng)該利用繼承思想,將Threadrun法,定義自己要運(yùn)行的線程代碼。1、繼承Thread3、調(diào)用線程對(duì)象的start程,start調(diào)用run2、實(shí)現(xiàn)Runnable1、定義類實(shí)現(xiàn)Runnable2、覆蓋Runnable接口的run方法,將線程要運(yùn)行的代碼到run方法后必須明確要運(yùn)行的run方法,而該run方法所屬對(duì)象是Runnable接口的子類對(duì)象,所以將子類對(duì)象傳給Thread5、調(diào)用Thread類的start方法。Stosspe卻仍持有這前獲鎖,此其他何程都能鎖定資源除被掛的程恢復(fù)不該使用usend)應(yīng)在己的hread類置一標(biāo),程該動(dòng)是起若標(biāo)線應(yīng)掛,便用wat(命進(jìn)等狀,標(biāo)線應(yīng)恢,用個(gè)c3、在同步中waitsleep用PublicvoidPublicvoid{{}}Publicvoid{{notifyAll();//喚醒上面所有的線程此時(shí)t0t1執(zhí)行}} 多線實(shí)現(xiàn)有兩種方法:分別是繼承Thread類Runnable接口同步實(shí)現(xiàn)有兩種方法:分別是synchronized和waitnotiySleep():使一個(gè)正在運(yùn)行的線程處于睡眠狀態(tài),是一個(gè)靜態(tài)方法,調(diào)用此方法要捕捉等待狀態(tài)的線程。而是由JVM是按照優(yōu)先級(jí)。爭(zhēng)start()方法,使線程就緒狀態(tài),以后可以被調(diào)度為運(yùn)行狀態(tài),一個(gè)線程必須78synchronzied1、其他方法前是否加了synchronized2、如果這個(gè)方法內(nèi)部調(diào)用了wait,則可以進(jìn)入其他的synchronized3、如果這個(gè)方法都加了synchroinized有調(diào)wait4static,它用的同步鎖是當(dāng)前類的字節(jié)碼,與非靜態(tài)方法不能同步,因?yàn)榉庆o態(tài)的方法用的是this.行5、臨時(shí)阻塞狀態(tài):線程具備了cpu權(quán),正等著CPU行80synchronizedjava.util.concurrent.locks.Lock相同點(diǎn):lock完成synchronized的所有功能例如它的tryLock最常用的集合類是ListMapList合具體包括了ArrayListLinkedList 對(duì),如果對(duì)象要保存在hashSetHashMapequals它們的hashcode須等如果不是要保存在hashSethashMap則與hahsCodehashcode等是可以的,例如arrayList用實(shí)現(xiàn)hashcode,當(dāng)然我們沒有理由不實(shí)現(xiàn),通常都會(huì)去實(shí)現(xiàn)的。常用的:java.langjava.io.java.utiljava.sqljavax.servletorg.apache.struts常用的接口:RemoteListMapNodeListServletHttpServletRequequestHttpServletResponseTransaction(hibernate)、session(hibernate)、httpSession.Java中有字節(jié)流、字符流,字節(jié)流繼承于inputStream,OutputStream符樓繼承于OutputStreamWriterjava.io86、XMLDOM、SAX、StAX較多,而且DOM必須在解析文件之前把整個(gè)文檔載入內(nèi)存,適合對(duì)XML的隨機(jī)。回調(diào)時(shí)間中寫入處理代碼來處理XML合對(duì)XMLStAX:StreamAPIfor用到了數(shù)據(jù),信息配置兩個(gè)方面,在做數(shù)據(jù)交換,將不能數(shù)據(jù)源的數(shù)據(jù)組裝成XML文件,然后將XML文件壓縮打包加密后通過網(wǎng)絡(luò)傳送給接收者,接收與解壓縮后再同XML文件中還原相關(guān)信息進(jìn)行處理,在做軟件配置時(shí),利用XML可以很方便的進(jìn)行,軟件的各種配置參數(shù)都在XML文件中。strutshibernate到了大量的xml置XMLdtd的packagepackage@authorpublicclassDemo6publicstaticvoidmain(String[]args){intsum=getSum(5);}privatestaticintgetSum(intnum){return}}協(xié)議主機(jī)端文件四部分組成packageimportpackageimportimportimportjava.io.FileReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.PrintWriter;import.Socket;import @authorpublicclassDemo7publicstaticvoidmain(String[]args)throwsUnknownHostException,IOExceptionSockets=newBufferedReaderbufnewBufferedReader(newFileReader("這里定義要關(guān)聯(lián)的文件"));PrintWriterout=newPrintWriter(s.getOutputStream(),true);Stringline=null;}BufferedReaderbufIn=newBufferedReader(newStringstr=bufIn.readLine();}}packagecn.xuzheng.test;importpackagecn.xuzheng.test;importjava.io.BufferedReader;importjava.io.FileWriter;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.PrintWriter;importimportimport@authorpublicclassDemo8publicstaticvoidmain(String[]args)throwsIOException{ServerSocketss=newServerSocket(10000);Sockets=BufferedReaderbufnewBufferedReader(newInputStreamReader(s.getInputStream()));PrintWriterout=newPrintWriter(newFileWriter("指定要輸出的位置文件"));Stringline=while((line=buf.readLine())!=null){}PrintWriterout1newPrintWriter(s.getOutputStream());}}CS一般建立在的網(wǎng)絡(luò)上,小范圍里的網(wǎng)絡(luò)環(huán)境,局域網(wǎng)之間再通過專門服務(wù)器提供和BS建立在廣域網(wǎng)之上的,不比是專門的網(wǎng)絡(luò)硬件環(huán)境,例如與 管理,有比cs更強(qiáng)的使用范圍,一般只要有操作系統(tǒng)和瀏覽器就可以。結(jié)構(gòu)適宜,可以通過BS發(fā)布部分可以5 不CSBS構(gòu)建組成,方面構(gòu)建個(gè)別的更換,實(shí)現(xiàn)系統(tǒng)的無縫升級(jí),開銷減到最小,用戶從網(wǎng)CSjava類裝入JVM對(duì)象進(jìn)行讀寫操作,也可將流化后的對(duì)象傳輸于網(wǎng)絡(luò)之間,序列化時(shí)為了解決對(duì)對(duì)象流進(jìn)行讀寫操作時(shí)的問題序列化的實(shí)現(xiàn):將需要被序列化的類實(shí)現(xiàn)Serializable接口,然后使用一個(gè)輸出流(如:的writeObject(Objectobj)方法就可以將參數(shù)為obj對(duì)象寫出(即保存其狀態(tài)),要恢復(fù)的話則用輸入web存在了Sessiontomcat在重Session到程調(diào)用,這就需要在網(wǎng)絡(luò)上傳輸對(duì)象,被傳輸?shù)膶?duì)象就必須實(shí)Serializable口。web-inf/classes中的類,然后才委托上級(jí)的類加載器加載如果我們?cè)趖omcatweb一個(gè)java.lang.String,這時(shí)候Servlet程序加載的就是我們自己寫的Java.lang.String但是這么干就會(huì)出現(xiàn)很多的問題,原來所有用了java.lang.Stringassertion就是在程序中的一條語句,它對(duì)一個(gè)boolean表達(dá)式進(jìn)行檢查,一個(gè)正確程序必須保證這個(gè)為了提高性能,在軟件發(fā)布后,assertion查通常是關(guān)閉的。所謂內(nèi)存是指一不再被程使用的對(duì)或變量直占據(jù)在內(nèi)存中jaa中有回機(jī)制,可以證一對(duì)不在的時(shí),即象成了兒的候,象將動(dòng)收從內(nèi)存中除,由于java使有圖方進(jìn)回管可消循的題例個(gè)象相,要們根程可的那么GC是以收們。檢查java中的內(nèi)存,一定要讓程序?qū)⒏鞣N分支情況都完整執(zhí)行到程序結(jié)束,然后看某個(gè)對(duì)象是返回找不到對(duì)象的結(jié)果,這也會(huì)導(dǎo)致無法從HashSet集合中單獨(dú)刪除當(dāng)前對(duì)象,造成內(nèi)存。publicstaticvoidcheck publicstaticvoidcheck =" Stringregex="1[358][0-9]{9}";Stringregex="1[358]\\d{9}";Booleanb= }當(dāng)表達(dá)式兩邊是兩個(gè)boolean102、三元運(yùn)算符和ifelse但是ifelse語句是可以沒有運(yùn)算結(jié)果的,它的執(zhí)行語句只要是合法的表達(dá)式就可以了。103、If和switchif的應(yīng)用場(chǎng)3、對(duì)運(yùn)算結(jié)果是boolean類型表達(dá)式進(jìn)行判Switch對(duì)于幾個(gè)固定的值進(jìn)行判斷,建議使用switchswitchy語句將會(huì)具體的答案加載進(jìn)內(nèi)存,1、選擇的數(shù)據(jù)類型有限,僅限于byte、short、int、2、里面是無序的,case和defautl都可以,執(zhí)行到switch語句結(jié)3、結(jié)束switch語句的兩種情況,遇到break指定到swtich4、如果匹配的casedefault沒有對(duì)應(yīng)的breaks,那么程序會(huì)繼直到遇到break或者swicth結(jié)尾結(jié)束。105、Forwihle首先是格式上的差異,在使用上有點(diǎn)小區(qū)別,就是變量的作用域的問題,對(duì)for而言一般情況下如果存中就被釋放了,然后while的變量定義在while執(zhí)行語句之外,它在內(nèi)存中是一只都存在的。作用:如果應(yīng)用在選擇結(jié)構(gòu)中,用來結(jié)束switch語句,如果應(yīng)用在循環(huán)語句中,用來跳出循環(huán)語句,到定義在類中具有特殊功能的一端獨(dú)立的小程序(單獨(dú)封閉的區(qū)間)y也稱之為方法,是為了提高代碼的3、對(duì)于沒有任何變量指向的實(shí)體,會(huì)被視為,會(huì)被java的回收機(jī)制不定期的回收1、將成員變量都,并通過共有的方法對(duì)其進(jìn)行,這兩個(gè)方法是get和構(gòu)造函數(shù):修飾符(參數(shù)列表一般函數(shù):修飾符(參數(shù)列表){return語句}This所表達(dá)在函數(shù)所屬對(duì)象的,也就是說哪個(gè)對(duì)象調(diào)用了this所在的函數(shù)this就代表哪個(gè)對(duì)象This代表當(dāng)前對(duì)象,它自己不是對(duì)象,只是一個(gè)。2、構(gòu)造函數(shù)間的調(diào)用,構(gòu)造函數(shù)中調(diào)用其他構(gòu)造函數(shù)的this語句必須定義的構(gòu)造函數(shù)的第一場(chǎng),因2、靜態(tài)優(yōu)先于對(duì)象加載進(jìn)內(nèi)存的,所以不能對(duì)象的內(nèi)容,但是對(duì)象可以靜態(tài)內(nèi)容3、靜態(tài)方法中不可能定義thissuper關(guān)鍵字,因?yàn)閠his關(guān)鍵字代表的是對(duì)象,但是靜態(tài)加載的時(shí)候都2、成員變量也成為對(duì)象變量或者實(shí)例變量,因?yàn)槌蓡T變量是對(duì)象使用的變量,靜態(tài)變量也成為量3、成員變量是隨著類對(duì)象的出現(xiàn)而出現(xiàn)的,隨著類對(duì)象的而的,靜態(tài)變量隨著類的加載2、被static4、靜態(tài)方法中不可能定義thissuper等關(guān)鍵字,因?yàn)閠his代表的是當(dāng)前對(duì)象,但是靜態(tài)加載的時(shí)候沒package@authorclassSingleDemoprivatestaticSingleDemos=newprivatepublicstaticSingleDemoreturn}}class privatestaticSingle2s=null;privateSingle2(){}publicstaticSingle2s=newreturn}} privateintprivatestatic p=new (intage){this.age=}public return}publicvoidsetAge(intthis.age=}publicintreturn}}publicclasspublicstaticvoidmain(String[]args) p1= p2= p1 p2= }}2、影響系統(tǒng)的可擴(kuò)展性,繼承樹的層次越多,在繼承樹上增加一個(gè)新的繼承分支需要?jiǎng)?chuàng)建很的多沒有空參數(shù)的構(gòu)造函數(shù)時(shí),子類的構(gòu)造函數(shù)必須通過this或者super語句指定要的構(gòu)造函數(shù)。中都有一句默認(rèn)的隱式語句super,會(huì)默認(rèn)調(diào)用父類中空參數(shù)的構(gòu)造函數(shù),因?yàn)樽宇悓?duì)象在初始化時(shí),必須2、給子類初始化,如果父類中沒有空參數(shù)的構(gòu)造函數(shù),那么此時(shí)再手動(dòng)就必須通過super語句this語句指定要父類的構(gòu)造函數(shù)3、Final修飾的方法不可以被覆4、Final修飾的變量是一個(gè)常量,只能被賦值一次,是為了增強(qiáng)閱讀性,只要數(shù)據(jù)是固定的,將將這個(gè)數(shù)據(jù)用一個(gè)名稱來表示,并用final修飾,常量名稱都是大寫字母,多個(gè)單詞組成時(shí)用下劃線來分 表現(xiàn)形式:publicstaticfinal4、接口成員都是public3、抽象類是繼承關(guān)系,是isa的關(guān)系,多實(shí)現(xiàn)是likea的關(guān) 133、object類中的equals方法,了解getClass().toString()方法,通常自定義類中會(huì)復(fù)寫equalshashCodetoString為什么?Equalsequals,因?yàn)閛bject是所有類的父類,它已經(jīng)具備了equals方法,對(duì)對(duì)象進(jìn)行比較,所以我們就可以不用再去定義新的發(fā)那個(gè)發(fā)去對(duì)兩個(gè)對(duì)象in性比較,直接使用Object類中的equals方法就可以了,但是Object類中的equals方法比較的是地址值,不是我們所需要的,那就得保留父類的功能,建立自身的比較內(nèi)容,hashCodetoString等方法一樣。PublicvoidPublicstaticvoidPublicstaticvoidPublicstaticvoidm1(String1屬性privatefinal類2、不對(duì)外公開修改屬性的set方法,只提供get方34、覆蓋Object類的equals和hasCode方一些方法在運(yùn)行時(shí)意的能是ABCDE,此類問題在JDK5.0以前采用自定義帶有枚舉功能的類解決,java5以后可以直接使用枚舉予以解決,使用enum關(guān)鍵字用于定義一個(gè)枚舉類,一個(gè)枚舉也可以有構(gòu)造函數(shù)、字段和方法。1、枚舉類也是一種特殊形式的jav2、枚舉類中的每一個(gè)枚舉值代表枚舉類的一個(gè)實(shí)例對(duì)3、與java中的普聽類一樣,在枚舉類時(shí),也可以屬性、方法和構(gòu)造函數(shù),但是枚舉類的構(gòu)4象6Valueof(Stringname):此方法雖然在JDKValues()此方法雖然在JDK文檔中查找不到,但每個(gè)枚舉類都具有該方法,它遍歷枚舉類的所有枚舉java類中的各種成分映射成一個(gè)個(gè)java對(duì)象,例如一個(gè)類有成員變量、方法、構(gòu)造方class,class類用于表示.class文件,如何得到某class文件對(duì)應(yīng)的class對(duì)象,139、struts有沒有封裝?怎么實(shí)現(xiàn)140、說說你常用到JDKCollection層次結(jié)構(gòu)中的根接口,Collection表示一組對(duì)象,這些對(duì)象也稱為Collection的元素,一些collectionCollection是有序的,而另外一些則是無序的,JDK(set和list)實(shí)現(xiàn)Collection,并在需要最大普遍性的地方操作這些Collection。Enumeration<E>:實(shí)現(xiàn)Enumeration接口的對(duì)象,它生成一系列的元素,一次生成一個(gè),聯(lián)系 Queue<E>:所有超級(jí)接口Collection.i ble在處理元素前用于保存元素的集合除了基本的CollectionSet<E>:所有超級(jí)接口:collectionible一個(gè)不包含重復(fù)元素collection,更正式的說,set不包含滿足e1.equals(e2)的元素對(duì)e1和e2,并且最多包含一個(gè)null元素,正如其名稱所暗示的,此接口模仿了數(shù)學(xué)上的set的抽象。數(shù)組:同一類型的數(shù)據(jù)持久化狀態(tài):OID不為null.位于session緩存中,持久化對(duì)象和數(shù)據(jù)庫中的記錄對(duì)應(yīng),session在清理緩存時(shí),會(huì)根據(jù)持久化對(duì)象的屬性變化,session中有許多方法都能夠觸發(fā)java對(duì)象進(jìn)入持久化狀態(tài),save方法把臨時(shí)狀態(tài)對(duì)象轉(zhuǎn)變成持久化對(duì)load和get方法返回的對(duì)象總是處于對(duì)持久化狀態(tài),updatesaveOrUpdate和lock方法都是游離對(duì)象轉(zhuǎn)成持久化對(duì)象,當(dāng)一個(gè)持久化對(duì)象關(guān)聯(lián)一個(gè)臨時(shí)對(duì)象,在允許對(duì)應(yīng),不處于session的緩存中,在數(shù)據(jù)庫庫中沒有對(duì)應(yīng)的記錄。游離狀態(tài):OIDnull.session的緩存中,一般情況下,游離對(duì)象是由持久化對(duì)象轉(zhuǎn)變過來的session中有很session的close方法被調(diào)用時(shí),session的緩存被清空,緩存中的所有的持久化對(duì)象都游離對(duì)象,如果在應(yīng)用程序中沒有變量這些游離對(duì)象,他們就會(huì)結(jié)束生命周期,evict方法能夠從緩存中刪除一個(gè)持久化對(duì)象,使它變成游離狀態(tài),當(dāng)session的緩存中保存了大量的持久化對(duì)象,會(huì)消耗許多的內(nèi)存空間,為了提高性能可以考慮調(diào)用evict方法,從緩存中刪除一些持久化對(duì)象。刪除狀態(tài):OID不為null,從一session實(shí)例緩存中刪除,session已經(jīng)計(jì)劃將其從數(shù)據(jù)刪除,session在清理緩存時(shí),會(huì)執(zhí)行SQLdelete語句,刪除數(shù)據(jù)庫中的對(duì)應(yīng)的記錄,一般情況下,應(yīng)用程序不該再使用器中的環(huán)境變量接互,不必關(guān)注其它系統(tǒng)問題。主要有WEB服務(wù)器來實(shí)現(xiàn)。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。該容器提供的接口嚴(yán)J2EE規(guī)范中WEBAPPLICATION標(biāo)準(zhǔn)。我們把遵守以上標(biāo)準(zhǔn)的WEB服務(wù)器就叫做J2EE中的WEBEJB容器:Enterprisejavabean容器。更具有行業(yè)領(lǐng)域特色。他提供給運(yùn)行在其中的組件EJB各種管理功能。只要滿足J2EEEJB放入該容器,馬上就會(huì)被容器進(jìn)行高效率的管理。并且可以通過現(xiàn)成JNDI(JavaNaming&DirectoryInterface)JAVA命名 JMS:(JavaMessageService)JAVA消息服務(wù)。主要實(shí)現(xiàn)各個(gè)應(yīng)用程序之間的通訊。包括點(diǎn)對(duì)點(diǎn)和廣播JA(JavaJAF(JavaM/I(mteehodIvoaionitrnet對(duì)請(qǐng)中協(xié))們要于過用務(wù)。例如一臺(tái)算上運(yùn)一程序它提分析務(wù),們可在本計(jì)機(jī)上現(xiàn)其直接MI是AStruts的工作原理:首先從瀏覽器端發(fā)起請(qǐng)求,通過struts過濾器,找到struts自定義過濾器,然后找到該配置文件中實(shí)現(xiàn)的與請(qǐng)求相關(guān)的action,actionnaeaction的對(duì)應(yīng)方法。然后通過該方法返回值,找到struts自定義配置文件中的result結(jié)果集,d{1}[09a-z-Z]\d{4}[-9azA-來斷否合法的15位或者18碼因?yàn)?5和18位號(hào)是從7位到12的為日類型這樣們以設(shè)出加準(zhǔn)的正模,使的日合法這我們正表達(dá)式[1][9]{}[0][09[13][-9packagecn.xuzheng.test;importjava.util.regex.Matcher;importjava.util.regex.Pattern;importorg.junit.Test;packagecn.xuzheng.test;importjava.util.regex.Matcher;importjava.util.regex.Pattern;importorg.junit.Test; 生日為 生日為 *日@authorpublicclassDemo9{publicvoid " ","13068119871209201","123456789012345", for(inti=0;i<str.length;i++){Matchermatcher=p1.matcher(str[i]);}Patternp2 Patternp3= for(inti=0;i<str.length;i++){Matchermatcher=p2.matcher(str[i]);booleanb=matcher.find();Strings=matcher.group(1);Matchermatcher2=p3.matcher(s);System.out.println("生日為:"+matcher2.group(1)+"}}}}}2a.txtb.txtc.txt文件中,a.txt文件中的單詞用回車符隔開,b.txt文件中用回車或者空格進(jìn)行分隔packagepackagecn.xuzheng.test;importjava.io.File;importjava.io.FileReader;importjava.io.FileWriter;publicclassDemo10{publicstaticvoidmain(String[]args)throwsException{FileManagera=newFileManager("a.txt",newchar[]{'\n'});FileManagerb=newFileManager("b.txt",newchar[]{'\n'});FileWriterc=newFileWriter("c.txt");StringaWord=null;StringbWord=aWord=}}}}classFileManager{String[]words=null;intpos=0;publicFileManager(Stringfilename,charseperators)throwsException{Filef=newFile(filename);//按照傳遞的文件名創(chuàng)建文件FileReaderreader=newFileReader(f);char[]buf=newchar[(int)f.length()];intlen=reader.read(buf);Stringresults=newString(buf,0,len);Stringregex=null;regex=regex=}words=}publicStringreturnnull;}}return}}3編寫一個(gè)程序?qū):\java 下的所有的.java文件到d:\jad packagepackage@authorpublicclassDemo11publicstaticvoidmain(String[]args)intarr7,3,5,2,8};//定義一個(gè)數(shù)組,并對(duì)其進(jìn)行}privatestaticvoidreverse(int[]arr)for(inti0;iarr.length/2;i數(shù)組inttemp=arr[i];//定義一個(gè)int類型的temp臨時(shí)變量}}}privatestaticvoidprintArray(int[]arr){for(inti=0;i<arr.length;i++)}}}}publicpublicclasstestvoidshow(inta,intb,float}A.voidshow(inta,floatc,intb){}//重B,voidshow(inta,intb,floatc){}//一樣,不能C.intshow(inta,floatc,intb){returna;}//重載關(guān)D.intshow(inta,floatc){returna;}//重載哪個(gè)答案和show載overload碼的閱讀性,方便用戶使用,當(dāng)定義功能相packagepackagepublicclasstestpublicstaticvoidmain(String[]args)intx=}}}解析:首先判斷==左邊兩邊的運(yùn)算,++xx此時(shí)x=1,y--代表y運(yùn)算后要自減1,++x==y然后y--,此時(shí)x=1,y=0.輯運(yùn)算左右變量的是||左邊已經(jīng)為真,右邊不再參與運(yùn)算,所以最后結(jié)果是x=2,y=0packagepackagepublicclasstest2publicstaticvoidmain(String[]args)intaintc=(a>b)?a++:b++;//a=3,b=9,c=8;intd=(a>b)?++a:++b;//a=3,b=10,d=10*此時(shí)判斷a>b?a=3>b=9?因?yàn)閎已經(jīng)參與前面的運(yùn)算結(jié)果為9,此時(shí)三元運(yùn)算結(jié)果為false,inte=(a<b)?a++:b++;//a=4,b=10,e=3intf=(a<b)?++a:++b;//a=5,b=10,f=5;}}考點(diǎn):三元運(yùn)算符,以及邏輯運(yùn)算符,注意后面參與的運(yùn)算的a、b數(shù)packagepackagepublicclassTest3publicstaticvoidmain(String[]args)int}}}考點(diǎn):ifelse結(jié)果,因?yàn)閕felse點(diǎn),else的一個(gè)if,所以上面沒有輸出結(jié)果。當(dāng)m>0packagepackagepublicclassTest4publicstaticvoidmain(String[]args)inti=0,j=5;break}}}}而且外循環(huán)起了一個(gè)標(biāo)示號(hào)tp,首先外循環(huán),沒有初始化表達(dá)式,以及判斷語句,還有循環(huán)操作表達(dá)式,直接進(jìn)入執(zhí)行語句,此時(shí)的執(zhí)行語句為外循環(huán)括號(hào)里面所有的x行自1,此x=1,然后進(jìn)入內(nèi)存ifi=1>5--?為假,繼續(xù)執(zhí)行,直i=1>j--為真時(shí),break外循環(huán),此時(shí)應(yīng)該為i=1>0j=0;但是j行自減操作,此時(shí)j值為-1.packagepackagepublicclassTest5publicstaticvoidmain(String[]args){Stringfoo="blue";boolean[]bar=new booleanbar=}}}分析:bar[0]的元素根本無法判斷是truefalse,所if執(zhí)行里面的packagepackagepublicclassTest6publicstaticvoidmain(String[]args)int}privatestaticvoidshow(inti,intj){}}將i和j作為方法的參數(shù)傳遞如show方法中,方法中i+=j進(jìn)行運(yùn)算,運(yùn)算完畢后方法彈棧,此時(shí)棧內(nèi)存中的i和j果為i=4,j=2.packagepackagepublicclassTest7publicstaticvoidmain(String[]args)int[]a=newint[1];}privatestaticvoidmodif(int[]a){}}int1值為0,調(diào)用modif中packagepackagepublicclassTest8publicstaticvoidmain(String[]args)StringStringfoo=args[1];Stringbar=args[2];String}}d:\>javaTestRedGreenBluewhatisthevalueofbaz?bazhasvalueofbazhasvalueofbazhasvalueofbazhasvalueofbazhasvalueofthecodedoesnottheprogramthrowan分析:主函數(shù)功能分析,args直接對(duì)它進(jìn)行賦值的,main為一數(shù)組長度應(yīng)該為2,即0、1、2但是baz中數(shù)組中角標(biāo)為3的元素對(duì)它進(jìn)行賦值,操作了數(shù)組的角標(biāo)范圍,packagepackagepublicclassTest9publicstaticvoidmain(String[]args)for(inti=1;i<=9;i++)for(intj=1;j<=i;j++){}}}}***********packagepackagepublicclassTest10publicstaticvoidmain(String[]args)for(inti=0;i<5;i++)for(intj=i+1;j<5;j++){System.out.print("");}for(intz=0;z<=i;z++){System.out.print("*");}}}}總結(jié):for查下,該邊初始化條件,尖朝上改變判斷條A,float[]=newA,float[]=newfloat[3];B,floatf2[]=newfloat[];//沒有明確數(shù)組的長度。C,float[]f1=newfloat[3];D,boolean[]b={"true","false","true"};//不兼容。true--boolean"true"--string字符串。因booleantruefalseE,doublef4[]={1,3,5};//int放到double,f4[0]打印的F,intf5[]=newint[3]{2,3,4};//此時(shí)不能寫出數(shù)組的長度,這樣會(huì)容易造成不確定性。格式錯(cuò)誤。G,floatf4[]={1.2,3.0,5.4};//丟失精度。1.2默認(rèn)的是double要 到float中要加f標(biāo)示。1ORM(Object/ReletionMap)充當(dāng)業(yè)務(wù)邏輯層和數(shù)據(jù)庫層之間的橋梁,才用元素?cái)?shù)據(jù)來描述對(duì)象關(guān)1、應(yīng)用程序先調(diào)用Configuration類,該類hibernate配置文件以及映射文件中的信息3、然后從SessionFactory一個(gè)SessionB:在查詢的情況下,可通過Session一個(gè)Query利用Query詢操作,如果沒有異常,Transaction提交這些操作到數(shù)據(jù)庫中。7、關(guān)閉8、關(guān)閉為什么要使用1、hibernate對(duì)JDBC數(shù)據(jù)庫的代碼做了封裝,大大簡化了數(shù)據(jù)層繁瑣的重復(fù)性代碼2、HibernateJDBC秀的orm化了session要調(diào)用session二級(jí)緩存是屬于sessionFactory存。配置二級(jí)緩存,在hibernate.cfg.xml式如下:集合級(jí)別的緩存存放的是查詢條件,也就是對(duì)象OID查詢緩存中存放的是查詢條件,存放的對(duì)象的OID清理緩存時(shí),會(huì)根據(jù)持久化對(duì)象的屬性變化,來同步更新數(shù)據(jù)庫,在同一個(gè)session實(shí)例的緩存中,數(shù)據(jù)庫表中的每條記錄只對(duì)應(yīng)唯一的持久化對(duì)象,session中有許多方法都能夠觸發(fā)java對(duì)象進(jìn)入持久化狀態(tài)。saveOrUpdate和lock方法是有游離對(duì)象轉(zhuǎn)成持久化對(duì)象,當(dāng)一個(gè)持久化對(duì)象關(guān)聯(lián)一個(gè)臨時(shí)對(duì)象,在允許錄對(duì)應(yīng)。不處于session的緩存中,在數(shù)據(jù)庫中沒有對(duì)應(yīng)的記錄。游離狀態(tài):OIDnull,不再處session的緩存中,一般情況下,游離對(duì)象是由持久化對(duì)象轉(zhuǎn)變過來的,因此在數(shù)據(jù)庫中可能還存在于它對(duì)應(yīng)的記錄。Session中有很多方法使持久化對(duì)象轉(zhuǎn)變成游離對(duì)象,當(dāng)session的close方法被調(diào)用時(shí),session的緩存被清空,緩存中的所有持久化對(duì)象都編程游離對(duì)象,如果在應(yīng)用程序中沒有變量這些游離對(duì)象,它們就會(huì)結(jié)束生命周期,evict方法能夠從緩存中刪除一個(gè)持久化對(duì)象,使它變成游離狀態(tài),當(dāng)session的緩存中保存了大量的持久化對(duì)象,會(huì)消耗許多內(nèi)存空間,為了提高性能可以考慮調(diào)用evict方法,從緩存中刪除一些持久化對(duì)象。刪除狀態(tài):OID不為null.從一個(gè)session實(shí)例緩存中刪除,session已經(jīng)計(jì)劃將其從數(shù)據(jù)庫刪除,session在清理緩存時(shí),會(huì)執(zhí)行SQLdelete從持久狀態(tài)到游離狀態(tài)有這些方法:evictcloseclear()從游離狀態(tài)到持久狀態(tài)有以下方法:update()saveOrUpdate()lock()10cascade11hibernate1、不能為3、每條記錄的主鍵值不會(huì)改變符串類型要節(jié)省的數(shù)據(jù)庫空間。許多數(shù)據(jù)庫系統(tǒng)都提供了自動(dòng)生成主鍵的值的機(jī)制。1、increment:使用于主鍵,由hibernate自動(dòng)以遞增的方式生成標(biāo)識(shí)符,每次增量為值,默認(rèn)情況下,采用hibernate_unique_key表的next_hi字段5、Native:使用于主鍵,根據(jù)底層數(shù)據(jù)庫對(duì)自動(dòng)生成標(biāo)識(shí)符的能力來選擇identity、sequence、hilo6、Uuidhex:適用于主鍵,hibernate采用128位的uuid算法來生成標(biāo)識(shí)符,該算法能夠在網(wǎng)環(huán)境中生成唯一的字符串標(biāo)識(shí)符,這種策略并不流行,因?yàn)樽址愋偷闹麈I比整數(shù)類型的主鍵占用7、Assigned:適用于自然主鍵,由java程序負(fù)責(zé)生成標(biāo)識(shí)符,不能把setID()方法為private的,盡要快多了,因此session的緩存可以提高數(shù)據(jù)的性能不會(huì)立即執(zhí)行相關(guān)的SQL語句,這使得session能夠把幾條相關(guān)的SQL語句合并為一條SQL語句,以便減14、SessionSession清理緩存是指按照緩存中對(duì)象的狀態(tài)的變化來同步更新數(shù)據(jù)庫,清空是session關(guān)系1、不是線程安全的,因此在設(shè)計(jì)軟件架構(gòu)時(shí),應(yīng)該避免多個(gè)現(xiàn)成共享同一個(gè)session例作單元分配單獨(dú)的sessionSession類的find()方法以及Query接口都支持HQL檢索方式,這兩者的區(qū)別在于,前者只是執(zhí)行淘汰了find法,而Query真正的HQL能。索所有的表,對(duì)于單個(gè)對(duì)象的持久化操作只需要處理一個(gè)表,映射的靈活性很大,子類可以對(duì)包括基類2、OIDOID3、HQLHQL語4、QBCQBC(QueryByCritria)API對(duì)5、本地SQL據(jù)庫的SQL可將這個(gè)Forword寫在Global-Forword。延遲檢索:對(duì)應(yīng)用程序決定加載哪些對(duì)象,可以避免執(zhí)行多余select訪對(duì)象導(dǎo)航到另一個(gè)與它相關(guān)聯(lián)的對(duì)象,使用了外連接,select少。SessionsessionFactory可以跨session級(jí)別的為二級(jí)存問題問題3: 看表結(jié)構(gòu)對(duì)應(yīng)的類文件,比如UserInfoUserInfo.java2、通過對(duì)象導(dǎo)航,比如通過stu.getTeam()得到team3、使用4、使用qbc(QuerybyCriteria)5、直接使用sql集注意:hql法和sql不區(qū)分大小寫,但是注意的是對(duì)與對(duì)象必須遵循對(duì)象的大小寫,因?yàn)閔ql是對(duì)象查詢,同時(shí)須地清楚hql只能取的對(duì)象,而不支持4、動(dòng)的driverurl有的表與類都映射在一起,他們通過配置文件中的many-to-one、one-to-many、many-to-many.一級(jí)緩存:即session級(jí)別的緩存,隨著session的關(guān)閉而,load和itor操作,會(huì)從一級(jí)緩存。使用:org.hibernate.cache.EhCaheProvider來指定緩存提供商,即有提供緩
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年哈工大土力學(xué)試題及答案
- 2025年網(wǎng)絡(luò)語言的面試題及答案
- 2025年民宿整改面試題及答案
- 2025年色感圖標(biāo)測(cè)試試題及答案
- 泉州市2025屆高三一模地理試題參考答案
- 2025年水準(zhǔn)尺讀數(shù)測(cè)試題及答案
- 2025年郵政內(nèi)審面試試題及答案
- 2025年數(shù)學(xué)入學(xué)考試試題及答案
- 2025年安全履職測(cè)試題及答案
- 2025年中藥1考試試題及答案
- 2024中考百日誓師大會(huì)動(dòng)員講話稿
- 2025云南昆明空港投資開發(fā)集團(tuán)招聘7人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年中國電力中電華創(chuàng)電力技術(shù)研究有限公司招聘筆試參考題庫附帶答案詳解
- 政務(wù)信息化可行性研究報(bào)告
- 2025年江蘇無錫市惠山國有投資控股集團(tuán)有限公司招聘筆試參考題庫附帶答案詳解
- 2025-2030年中國陶瓷剎車片市場(chǎng)現(xiàn)狀分析及投資戰(zhàn)略研究報(bào)告
- 《職場(chǎng)禮儀》課程標(biāo)準(zhǔn)-32課時(shí)-
- 2024年公開招聘社區(qū)工作者報(bào)名表
- 安徽省蕪湖市2024-2025學(xué)年第一學(xué)期期末考試七年級(jí)語文試卷(含答案)
- 《家庭護(hù)士》課件
- 護(hù)士電子化注冊(cè)信息系統(tǒng)(醫(yī)療機(jī)構(gòu)版)醫(yī)療機(jī)構(gòu)快速閱讀手冊(cè)
評(píng)論
0/150
提交評(píng)論