欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      黑馬程序員java培訓(xùn)就業(yè)班筆記:day06總結(jié)

      時(shí)間:2019-05-13 18:54:18下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫(xiě)寫(xiě)幫文庫(kù)小編為你整理了多篇相關(guān)的《黑馬程序員java培訓(xùn)就業(yè)班筆記:day06總結(jié)》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫(xiě)寫(xiě)幫文庫(kù)還可以找到更多《黑馬程序員java培訓(xùn)就業(yè)班筆記:day06總結(jié)》。

      第一篇:黑馬程序員java培訓(xùn)就業(yè)班筆記:day06總結(jié)

      Day06總結(jié): 上午

      1、二維數(shù)組 格式:

      Int[][] arr=new int[2][3];[2]代表1維數(shù)組的個(gè)數(shù); [3]代表1維數(shù)組有三個(gè)元素; 內(nèi)存圖:

      分析:

      通過(guò)對(duì)內(nèi)存圖分布可知,首先在棧內(nèi)存中加載main函數(shù),開(kāi)辟空間,定義一個(gè)變量arr,在堆內(nèi)存中通過(guò)New創(chuàng)建一個(gè)數(shù)組實(shí)體int[2],并分配其地址值為0x0045,數(shù)組元素值進(jìn)行默認(rèn)初始化為Null;然后把地址值賦值給棧內(nèi)存中的arr.在堆內(nèi)存中開(kāi)辟兩塊空間,分別用來(lái)存放二維數(shù)組中的數(shù)組元素,分配其地址值分別為0x0056、0x0089,然后對(duì)將地址值傳給二維數(shù)組中的元素,所以說(shuō)對(duì)內(nèi)存中二維數(shù)組存儲(chǔ)的是一維數(shù)組的地址值。最后變量通過(guò)二維數(shù)組的地址0x0045指向二維數(shù)組。

      注意:二維數(shù)組中必須指定長(zhǎng)度、以及實(shí)體沒(méi)有對(duì)二維數(shù)組進(jìn)行初始化時(shí)默認(rèn)為null;

      2、對(duì)二維數(shù)組的遍歷(大圈套小圈思想)For(int x=0;x

      3、面向?qū)ο蟮睦斫猓?/p>

      特點(diǎn):

      1、面向?qū)ο缶褪歉先藗兯伎剂?xí)慣的一種思想。

      2、從面向過(guò)程的執(zhí)行者,轉(zhuǎn)變成了面向?qū)ο蟮闹笓]者

      3、面向?qū)ο髮?fù)雜的事情簡(jiǎn)單化了。

      其實(shí)面向?qū)ο笫且环N思想,是面向過(guò)程而言,將復(fù)雜的事情變的更簡(jiǎn)單了。通過(guò)把大象放到冰箱里這個(gè)列子來(lái)理解面向?qū)ο蟮母拍?/p>

      面向過(guò)程:把冰箱門(mén)打開(kāi)、存儲(chǔ)大象、關(guān)閉冰箱;強(qiáng)調(diào)的過(guò)程注重行為; 面向?qū)ο螅罕?打開(kāi)、冰箱.存儲(chǔ)、冰箱.關(guān)閉;強(qiáng)調(diào)的是冰箱這個(gè)對(duì)象。

      面試題:你怎么理解面向?qū)ο螅?/p>

      首先說(shuō)面向?qū)ο蟮奶攸c(diǎn):它是一種思想,它讓復(fù)雜的問(wèn)題簡(jiǎn)單化,它把執(zhí)行者變成了指揮者。

      然后舉例子來(lái)說(shuō)明,最牛的就是結(jié)合實(shí)際場(chǎng)景來(lái)說(shuō):其實(shí)面試官你就是在用面向?qū)ο蟮乃枷朐谒伎紗?wèn)題,為什么這么說(shuō)?因?yàn)楣緲I(yè)務(wù)蒸蒸日上,需要招更多的人來(lái)完成項(xiàng)目,所以才在這里招聘人員,你需要找一些具備專(zhuān)業(yè)編程經(jīng)驗(yàn)的人,來(lái)幫公司完成工作,那么我就是那個(gè)對(duì)象,因?yàn)槲揖邆鋵?zhuān)業(yè)編程能力,你就是那個(gè)指揮者,指揮我來(lái)做事,至于我怎么去完成編程任務(wù),你是不需要去知道,你只要結(jié)果了就可以了,這其實(shí)就是把你之前的工作簡(jiǎn)化了,你不必再事必躬親了。這就是面向?qū)ο笏枷氲捏w現(xiàn)。

      同時(shí)可以結(jié)合去飯店吃飯,在家做事等等列子來(lái)說(shuō)明面向?qū)ο蟮乃枷搿?/p>

      擴(kuò)展:OOP:面向?qū)ο缶幊獭?/p>

      OOA面向?qū)ο蠓治觥?/p>

      OOD:面向設(shè)計(jì)。還有面向接口、面向框架、面向?qū)ο蟮恼Z(yǔ)言:C++、JAVA、C#

      4、在實(shí)現(xiàn)功能,先找java當(dāng)中是不是提供好了相關(guān)的對(duì)象,沒(méi)有對(duì)象自己造一個(gè)對(duì)象。比如說(shuō)公司招聘人員找不到人的時(shí),這時(shí)公司就需要自己在公司內(nèi)部培養(yǎng)人,也就是自己造對(duì)象。

      5、類(lèi)和對(duì)象關(guān)系:

      a)類(lèi)到底是什么?

      類(lèi)就是對(duì)現(xiàn)實(shí)生活中事物的描述,描述中包含了該類(lèi)事物的共性?xún)?nèi)容。Class Car(){ Int num;String color;Void run(){} } 在類(lèi)中定義的變量和函數(shù)都稱(chēng)為類(lèi)中的成員。成員:

      成員變量---屬性 成員函數(shù)---行為

      b)什么是對(duì)象?

      對(duì)象就是該類(lèi)事物實(shí)實(shí)在在存在的個(gè)體。

      Eg:現(xiàn)實(shí)生活中的對(duì)象:張

      三、李四

      想要描述:提取對(duì)象中的共性?xún)?nèi)容,對(duì)具體的抽象。

      描述時(shí):這些對(duì)象的共性有姓名年齡性別學(xué)習(xí)java的功能。對(duì)象也可以理解為其實(shí)就是個(gè)容器,用來(lái)存儲(chǔ)更多的數(shù)據(jù),存儲(chǔ)的都是每一個(gè)對(duì)象特有的數(shù)據(jù),而類(lèi)就是這些數(shù)據(jù)所屬的屬性。

      用java語(yǔ)言來(lái)描述一個(gè)小汽車(chē)

      描述事物:無(wú)非就是描述事物的屬性和行為 屬性:輪胎數(shù)、顏色 行為:運(yùn)行 Eg: Class Car { String color=“red”;Int num=4;Run(){ System.out.println(color+“"+num);} } Class CarDemo { Public static void main(String[] args){ Car c=new Car();C.color=”bule“;C.num=5;C.run();m

      Car c1=new Car();C1.num=8;C1.color=”green“;C1.run();} } 重點(diǎn):分析上述代碼在內(nèi)存中的分布:

      復(fù)習(xí)的時(shí)候?qū)憙?nèi)存分析:

      6、成員變量和局部變量的區(qū)別:

      1、源代碼中定義位置不同:

      成員變量:定義在類(lèi)中,在整個(gè)類(lèi)中有效。局部變量:定義在函數(shù)中,在局部范圍內(nèi)有效。簡(jiǎn)單一句話(huà):作用范圍不一樣,成員變量作用于整個(gè)類(lèi)中,局部變量作用于函數(shù)中,或者語(yǔ)句中。

      2、在內(nèi)存中的位置和事件不同:

      生命周期不同:

      成員變量:隨著對(duì)象的創(chuàng)建的而出現(xiàn)在堆內(nèi)存中,隨著對(duì)象被回收而消失。

      局部變量:隨著變量所屬局部區(qū)域的運(yùn)行,而出現(xiàn)在棧內(nèi)存中,隨著所屬區(qū)域運(yùn)行結(jié)束而釋放。

      3、變量使用的初始化:

      成員變量:因?yàn)槎褍?nèi)存中都有默認(rèn)初始化值,對(duì)于引用型變量默認(rèn)值就是null;局部變量:因?yàn)樵跅?nèi)存中都沒(méi)有默認(rèn)初始化值,必須手動(dòng)初始化后才可以參與運(yùn)算。

      7、匿名對(duì)象:

      即沒(méi)有名字的對(duì)象,簡(jiǎn)化書(shū)寫(xiě)用的。基本使用:

      1、當(dāng)對(duì)對(duì)象的方法只調(diào)用一次時(shí),可以用匿名對(duì)象來(lái)完成

      這樣寫(xiě)比較簡(jiǎn)化,如果對(duì)一個(gè)對(duì)象進(jìn)行這個(gè)成員的調(diào)用,必須給這個(gè)對(duì)象起個(gè)名字

      2、可以將匿名對(duì)象作為實(shí)際參數(shù)進(jìn)行傳遞。一旦對(duì)對(duì)對(duì)進(jìn)行多個(gè)成員操作時(shí)。必須要對(duì)對(duì)象起個(gè)名字。

      Eg: Main(){ Show(new Car())} Public static void show(Car c)

      { C.num=3; C.color=”back";C.run();}

      8、面向?qū)ο笕齻€(gè)特征:

      封裝:

      是指隱藏對(duì)象的屬性和實(shí)現(xiàn)細(xì)節(jié),僅對(duì)外提供公共訪(fǎng)問(wèn)方式,凡是面向?qū)ο蟊仨氂蟹庋b性。

      特點(diǎn): 將變化隔離 便于使用 提高復(fù)用性 提高安全性

      原則:

      1、將不需要對(duì)外提供的內(nèi)容都隱藏起來(lái)。

      2、把屬性都隱藏,提供公共方法對(duì)其訪(fǎng)問(wèn)。在代碼中的體現(xiàn):

      1、將成員變量都私有化,并通過(guò)共有的方法對(duì)其進(jìn)行訪(fǎng)問(wèn),這兩個(gè)方法是:setXxxgetXxx

      2、只要不準(zhǔn)備對(duì)外提供的全部都封裝起來(lái),3、私有僅僅是封裝的一種表現(xiàn)形式,函數(shù)是最小的封裝體。方法需要私有嗎?

      Public static void selectSort(){ Swap();} Private void swap()//此處私有是因?yàn)槲恢弥脫Q不用提供給用戶(hù)。{ } 代碼實(shí)現(xiàn): Class Person { Private int age;//為了不讓其他程序直接訪(fǎng)問(wèn)age屬性,避免錯(cuò)誤的數(shù)據(jù),可以使用一個(gè)關(guān)鍵字來(lái)完成private私有,它是一個(gè)權(quán)限修飾符。

      Public void setAge()//對(duì)外提供函數(shù)是可以控制你輸入的參數(shù)。//一個(gè)成員變量通常對(duì)應(yīng)的兩個(gè)方法、{ If(a>130||a<0){ Age=a;

      Speak();} Else System.out.println();} Public void getAge(){ Return age;}

      Void speak(){ Sop();} } Class PersonDemo { Public static void main(String[] args){ Person p=new Person();P.age=-20;//錯(cuò)誤數(shù)據(jù)是因?yàn)閷?duì)象直接訪(fǎng)問(wèn)age屬性造成的。P.speak();} } 總結(jié):之所以對(duì)外提供訪(fǎng)問(wèn)方式,就是因?yàn)榭梢栽谠L(fǎng)問(wèn)方式中加入邏輯判斷等語(yǔ)句 對(duì)訪(fǎng)問(wèn)的數(shù)據(jù)進(jìn)行操作,提高代碼的健壯性。凡是set開(kāi)頭的返回值類(lèi)型是void,get開(kāi)頭的跟它的返回值類(lèi)型一致。

      第二篇:黑馬程序員java培訓(xùn)就業(yè)班筆記:day05總結(jié)

      Day05 上午:

      1、數(shù)組的靜態(tài)初始化

      多種定義格式:

      Int[] arr=new int[]//標(biāo)準(zhǔn)格式,可以明確數(shù)組的數(shù)據(jù)類(lèi)型,和數(shù)組名,但是不知道數(shù)組的長(zhǎng)度

      Int arr[]=new int[] Int[] arr=new int[]{2,1,3,4,5,}//通過(guò)大括號(hào)可以標(biāo)示出數(shù)組中的內(nèi)容,此處最好別寫(xiě)長(zhǎng)度,因?yàn)槿菀壮鲥e(cuò),因?yàn)榧闯跏蓟瘜?shí)體,又初始化實(shí)體中的元素。

      Int[] arr={2,1,3,4,5};//可以明確數(shù)組的數(shù)據(jù)類(lèi)型,和數(shù)組名,也可以知道數(shù)組中的內(nèi)容。

      2、arr.length:方便獲取數(shù)組中的元素個(gè)數(shù)的方式。

      3、操作數(shù)組的最基礎(chǔ)的思想以及核心思想:

      a)最基礎(chǔ)的思想:就是遍歷。什么是遍歷。

      Eg:int[] arr = new int[3];int[] arr = {4,8,9,2,6,9};//明確了數(shù)組的類(lèi)型和長(zhǎng)度,并明確了數(shù)組中元素的內(nèi)容。

      // int[] arr1 = new int[]{4,8,9};//方便獲取數(shù)組中的元素個(gè)數(shù)的方式,可以使用數(shù)組實(shí)體一個(gè)屬性。length System.out.println(“l(fā)en:”+arr.length);

      for(int x=0;x

      if(x%2==1)

      System.out.println(“arr[”+x+“]=”+arr[x]);//arr[0] = 4;}

      這就是遍歷的思想,獲取數(shù)組中的元素,通常會(huì)用到遍歷。

      b)核心思想:就是操作數(shù)組中元素的角標(biāo),角標(biāo)即索引,因?yàn)榇鏀?shù)據(jù)的最終目的就是取出數(shù)據(jù)使用,就是操作角標(biāo),操作動(dòng)作:

      1、給數(shù)組角標(biāo)上的元素賦值,2、獲取角標(biāo)上元素的值,存儲(chǔ)都得用角標(biāo)

      4、數(shù)組中常見(jiàn)的操作:

      a)獲取最值:

      思路:

      1、首先我們要定義一個(gè)功能完成獲取數(shù)組中最大值的動(dòng)作;

      2、定義個(gè)函數(shù)來(lái)實(shí)現(xiàn)這一功能;明確結(jié)果,整數(shù)數(shù)組中的最大值,int,明確是否有未知內(nèi)容參與運(yùn)算,參數(shù)列表中有一個(gè)參數(shù),數(shù)組類(lèi)型int[],一定要注意這里是數(shù)組類(lèi)型,不是int型;

      3、如何實(shí)現(xiàn)功能細(xì)節(jié)呢?

      1、對(duì)數(shù)組中的元素進(jìn)行比較,將比較后比較大的值進(jìn)行記錄,并參與下一次比較,當(dāng)數(shù)組中的元素都比較完成后,最大值就已經(jīng)被記錄下來(lái)了。

      2、每次比較的較大的值不確定,定義一個(gè)變量進(jìn)行記錄,該變量如何初始化呢?只要初始化為數(shù)組中的人一個(gè)元素即可。

      3、應(yīng)該讓數(shù)組中的元素自動(dòng)和該變量記錄的元素進(jìn)行比較,所以可以使用遍

      歷,獲取數(shù)組中的每一個(gè)元素。

      4、當(dāng)遍歷到元素比較變量中的記錄的元素大,用該變量記錄住更大的元素。

      5、遍歷結(jié)束后,變量存儲(chǔ)就是數(shù)組中的最大值。實(shí)現(xiàn)代碼:eg:

      Public static int getMax(int arr){ /.定變量記錄較大的值;

      Int max=arr[0];//初始化數(shù)組中的任意個(gè)元素; //對(duì)數(shù)組進(jìn)行遍歷比較

      For(int x=1;xmax)

      Max=arr[x];} Return max;} 同樣有另外一種方式獲取最大值 Public static int getMax(int[] arr){ Int maxIndex=0;//初始化為數(shù)組中一個(gè)元素的角標(biāo) For(int x=1;xarr[maxIndex])

      maxIndex=x;} Return arr[maxIndex];} b)排序:

      1、選擇排序:

      首先通過(guò)數(shù)組中元素的比較方式來(lái)分析:

      用數(shù)組中第一個(gè)角標(biāo)的元素與數(shù)組中第二個(gè)角標(biāo)的元素進(jìn)行比較,發(fā)現(xiàn)9比6大,進(jìn)行位置置換,此處應(yīng)該定義一個(gè)三方變量,用來(lái)記錄住置換過(guò)程的元素值,然后再用第一個(gè)角標(biāo)的元素與下一個(gè)角標(biāo)元素進(jìn)行比較,按照全面的原則進(jìn)行置換位置,如果前者小于后者,則不置換位置,一次比較,當(dāng)?shù)谝惠喗Y(jié)束之后第一個(gè)角標(biāo)出能取的該數(shù)組中最小的元素的值,然后再用第一個(gè)角標(biāo)的元素開(kāi)始和下一個(gè)角標(biāo)的元素進(jìn)行比較,同理,當(dāng)?shù)诙喗Y(jié)束后,第二個(gè)角標(biāo)處獲取了該數(shù)組中的第二小的值。所以我們發(fā)現(xiàn)當(dāng)依次這樣比較下去,就可以對(duì)數(shù)組中的元素進(jìn)行排序,當(dāng)比較到arr.length-1元素時(shí),發(fā)現(xiàn)只剩下這一個(gè)元素,沒(méi)有其他元素和它進(jìn)行比較了。思路:

      1、首先定義一個(gè)功能函數(shù)對(duì)數(shù)組進(jìn)行排序,2、明確結(jié)果,沒(méi)有返回值,因?yàn)樗皇菍?duì)數(shù)組進(jìn)行排序的一個(gè)動(dòng)作,明確是否有未知內(nèi)容參與運(yùn)算,有,數(shù)組類(lèi)型int[] arr 實(shí)現(xiàn)代碼:

      Public static void selectSort(int[] arr){ For(int x=0;x

      if(arr[x]>arr[y]){

      Int temp=arr[x];Arr[x]=arr[y];Arr[y]=temp;} } }

      }

      優(yōu)化后的選擇排序:

      從上面的排序圖中我們可以知道,對(duì)數(shù)組中元素進(jìn)行置換位置的次數(shù)過(guò)多,也就是對(duì)堆內(nèi)存的操作頻繁,降低了性能,下面我們可以通過(guò)這種方式對(duì)性能優(yōu)化。

      思路:

      在棧內(nèi)存中我們定義兩個(gè)變量,分別用來(lái)記錄較小的元素的值和較小元素的角標(biāo),然后對(duì)其進(jìn)行初始化,至于初始化的值只要是數(shù)組中的任意元素即可,然后拿數(shù)組中的元素與它進(jìn)行比較,如果發(fā)現(xiàn)拿去比較的元素比變量中記錄的數(shù)值要小,那么就進(jìn)行位置置換,并記錄下較小的元素的角標(biāo),依次把數(shù)組中的元素遍歷完,就可以獲取數(shù)組中的最小元素的值和角標(biāo),然后我們拿初始化的值和獲取的最小的元素進(jìn)行位置的置換,這樣以來(lái)當(dāng)我們獲取了數(shù)組中的元素的最小的時(shí)候,堆內(nèi)存中的只用操作一次位置即可,這樣的就提高性能。實(shí)現(xiàn)代碼:

      Public static void selectSort_2(int[] arr){ For(int x=0;xarr[y])

      Num=arr[y];Index=y;} If(index!=x){ int temp = arr[x];arr[x] = arr[index];arr[index] = temp;

      } } } 注意:復(fù)習(xí)的時(shí)候添加注釋

      2、冒泡排序:

      首先通過(guò)排序方式來(lái)分析其步驟:

      通過(guò)排序方式,可以知道是用數(shù)組中的元素挨個(gè)比較,如果前面的元素的值比它下一個(gè)角標(biāo)的元素大,則進(jìn)行位置置換,然后再用第二個(gè)角標(biāo)的元素與下一個(gè)角標(biāo)的元素進(jìn)行比較,同樣如果下一個(gè)角標(biāo)的元素比它小,則進(jìn)行位置置換,這樣當(dāng)比較到arr.length-1個(gè)元素時(shí)已經(jīng)沒(méi)有 和它進(jìn)行的比較的元素了,當(dāng)?shù)谝惠啽容^結(jié)束后,我們可以知道最后一個(gè)角標(biāo)的元素為該數(shù)組中的最大值,按照同樣的原理進(jìn)行下一次比較,依次獲取了比較大的元素的值。

      實(shí)現(xiàn)代碼:

      Public static void bubbleSort(int[] arr){ For(int x=0;x

      If(arr[y]>arr[y+1]){

      //位置置換 } } } }

      c)折半查找:

      首先分析數(shù)組元素的查找方式:

      首先要明確數(shù)組時(shí)有序的。

      首先定義三個(gè)變量min、mid、max分來(lái)用來(lái)記錄最小角標(biāo)、中間角標(biāo)、最大角標(biāo),中間角標(biāo)的獲取為(min+max)/2;獲取中間角標(biāo)之后,就可以獲取中間角標(biāo)對(duì)應(yīng)的元素arr[mid];用我們所需要查找的key與中間角標(biāo)運(yùn)算進(jìn)行比較,如果key>arr[mid];那么此時(shí)min的位置就是mid的下一個(gè)角標(biāo),min=mid+1;然后再次獲取中間角標(biāo)的元素,mid=(min+max)/2,同時(shí)也獲取了中間角標(biāo)對(duì)應(yīng)的數(shù)組元素,arr[mid],然后同理,拿key與中間角標(biāo)的元素進(jìn)行比較.同樣的原則,依次比較,直到key==arr[mid]的時(shí)候獲取key.如果當(dāng)出現(xiàn)了min>max或者時(shí)候則說(shuō)明我們要查找的key在該數(shù)組中布存在,return-1;

      實(shí)現(xiàn)代碼:

      Public static void binarySearch(int[] arr int key){ Int min,mid,max;Min=0;Max=arr.length-1;Mid=(min+max)>>1//相當(dāng)于/2,右移的效率比它要高 While(arr[mid]!=key){ If(key>arr[mid])Min=mid+1;Else if(key

      Min=mid-1;If(max>1;}

      Return mid;} 注意:復(fù)習(xí)的添加代碼注釋

      總結(jié):折半查找也稱(chēng)二分查找,這種查找可以提高效率,但是被查找的數(shù)組的額元素必須是有序的。不能對(duì)無(wú)序的數(shù)組進(jìn)行排序后再用折半查找,因?yàn)檫@時(shí)候數(shù)組中元素的角標(biāo)已經(jīng)發(fā)生變化了。

      5、查表法思想:

      a)什么時(shí)候使用查表法?

      當(dāng)元素很多,而且這些元素與數(shù)組有對(duì)應(yīng)關(guān)系,而且這些數(shù)字都有角標(biāo)的規(guī)律的時(shí)候。

      擴(kuò)展:什么時(shí)候使用數(shù)組?

      當(dāng)同一類(lèi)型的元素較多時(shí),就使用數(shù)組這個(gè)容器對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)。b)查表法思想的代碼體現(xiàn):

      0 1 2 3 4 5 6 7 10 11 12 13 14 15 '0', '1', '2', '3', '4','5', '6',' 7', '8', '9','A',' B', 'C' ,'D', 'E' ,'F' 我們發(fā)現(xiàn)十六進(jìn)制中一共有16個(gè)元素,而且每通過(guò)&15獲取的數(shù)字都再15之內(nèi),都有對(duì)應(yīng)的十六進(jìn)制元素,而且元素對(duì)應(yīng)的數(shù)字正好有規(guī)律,而且符合了數(shù)組這種容器的特點(diǎn)角標(biāo),那么可以將十六進(jìn)制的元素都存儲(chǔ)到數(shù)組中,將每次&15的結(jié)果作為角標(biāo)去查這個(gè)數(shù)組,就可以獲取到十六進(jìn)制的對(duì)應(yīng)的元素。這就是查表思想。

      代碼體現(xiàn):

      Public static void searchList(int num){ //定義一個(gè)十六進(jìn)制的元素表

      Char[] arr={'0', '1', '2', '3', '4','5', '6',' 7', '8', '9','A',' B', 'C' ,'D', 'E' ,'F'};//定義一個(gè)char類(lèi)型元素的數(shù)組,用于存儲(chǔ)每次獲取到的十六進(jìn)制值。Char[] chs=new char[8];Int pos=chs.length;While(num!=0){ Int temp=num&15;Chs[--pos]=arr[temp];Num=num>>>4;} For(int x=pos;x

      通過(guò)上面我們可以知道那么是否可以定義這樣的一個(gè)功能函數(shù)呢?用來(lái)對(duì)十進(jìn)制、二進(jìn)制、八進(jìn)制、十六進(jìn)制進(jìn)行轉(zhuǎn)換?

      思路:

      1、明確結(jié)果,沒(méi)有返回值,只是對(duì)給定的數(shù)據(jù)轉(zhuǎn)換的功能。

      2、明確是否有未知內(nèi)容參與運(yùn)算,有,是什么?求的數(shù)值num,十六進(jìn)制是&15,八進(jìn)制是&7,二進(jìn)制是&1,那么&的這個(gè)是不確定的,我們定義為變量 base,當(dāng)這個(gè)數(shù)值通過(guò)&上這些數(shù)據(jù)后,要取出后面的數(shù)值,我們通過(guò)右移來(lái)實(shí)現(xiàn),但是各個(gè)進(jìn)制的不一樣右移的位置數(shù)也是不一樣的,十六進(jìn)制是無(wú)條件右移四位,八進(jìn)制是無(wú)條件右移三位,二進(jìn)制是無(wú)條件右移1位,所以這個(gè)數(shù)也是不確定的,定義變量 offset 實(shí)現(xiàn)代碼:

      //十進(jìn)制--二進(jìn)制

      public static void toBin(int num){ trans(num,1,1);} //十進(jìn)制--八進(jìn)制

      public static void toOctal(int num){ trans(num,7,3);} //十進(jìn)制--十六進(jìn)制

      public static void toHex(int num){ trans(num,15,4);} Public static void trans(int num,int base,int offset){ If(num==0){ Sop(0);;Return;} //定義一個(gè)十六進(jìn)制的元素表

      Char[] arr={0', '1', '2', '3', '4', '5', '6', ' 7', '8', '9', 'A',' B', 'C' ,' D', 'E' ,'F'};Char[] chs=new char[32];Int pos=chs.length;While(num!=0){ Int temp=num&base;Chs[--pos]=arr[temp];Num=num>>>offset;} For(ingt x=pos;x

      System.outr.println(chs[x]);} } 注意:復(fù)習(xí)的添加代碼注釋。

      這一章節(jié)自己還不是很熟悉,能理解,但是不能獨(dú)立寫(xiě)出代碼,在以后的幾天內(nèi)要每天都要一遍,并自己獨(dú)立寫(xiě)出代碼,做到思想理解透徹。先要產(chǎn)生一天的宏觀(guān)思想。復(fù)習(xí)方法:

      首先總結(jié)當(dāng)天學(xué)習(xí)的方法。遇到不會(huì)的先放到一邊。每天晚上睡著覺(jué)之前要回憶一遍。

      第三篇:黑馬程序員java培訓(xùn)就業(yè)班筆記:day10總結(jié)

      Day10總結(jié):

      1、多態(tài)的特點(diǎn):

      1、成員變量:

      當(dāng)在子父類(lèi)中出現(xiàn)了相同的非私有成員變量時(shí),在多態(tài)調(diào)用中的特點(diǎn):

      在編譯時(shí):參考引用型變量所屬類(lèi)中是否有調(diào)用的成員變量,如果有編譯通過(guò),如果沒(méi)有編譯失敗。

      在運(yùn)行時(shí):參考引用型變量所屬的類(lèi)中的成員。

      簡(jiǎn)單一句話(huà):對(duì)于成員變量無(wú)論是編譯還是運(yùn)行都參考引用型變量所屬類(lèi)中的成員變量。

      也就是說(shuō):成員變量看等號(hào)左邊。

      2、成員函數(shù):

      當(dāng)子父類(lèi)中出現(xiàn)一模一樣的函數(shù)時(shí),在多態(tài)調(diào)用中的特點(diǎn):

      在編譯時(shí):參考引用型變量的所屬的類(lèi)中是否有調(diào)用的成員函數(shù)。在運(yùn)行時(shí):參考的是對(duì)象所屬的類(lèi)中是否有調(diào)用的成員函數(shù)。

      原因是:編譯時(shí)期應(yīng)該參考父類(lèi),運(yùn)行時(shí)期應(yīng)該參考子類(lèi)。因?yàn)槌蓡T函數(shù)上有一個(gè)特點(diǎn)覆蓋。

      簡(jiǎn)單一句話(huà):對(duì)于成員函數(shù),編譯看左邊,運(yùn)行看右邊。

      3、靜態(tài)函數(shù):

      在編譯時(shí)期:參考引用型變量所屬的類(lèi)中是否調(diào)用的靜態(tài)函數(shù),如果有編譯通過(guò),如果沒(méi)有編譯失敗。

      在運(yùn)行時(shí)期:參考的還是引用型變量所屬的類(lèi)中的靜態(tài)函數(shù)。簡(jiǎn)單一句話(huà):對(duì)于靜態(tài)函數(shù),無(wú)論是編譯還是運(yùn)行都看左邊

      總結(jié):對(duì)于多態(tài)成員而言,無(wú)論編譯還是運(yùn)行都看左邊,只有成員非靜態(tài)函數(shù),編譯看左邊,運(yùn)行看右邊,因?yàn)楦采w的特性。

      2、多態(tài)的應(yīng)用: 代碼實(shí)現(xiàn):

      Object:所有類(lèi)的父類(lèi),該類(lèi)中的方法所有對(duì)象都具備。代碼實(shí)現(xiàn):

      Class Demo extends Object { Private int num;Demo(int num){ This.num=num;} 通常都會(huì)按照對(duì)象自身的特點(diǎn)對(duì)對(duì)象進(jìn)行比較,比如:現(xiàn)在要比較兩個(gè)Demo對(duì)象中null值是否相同。} Public boolean compare(Demo b){ Return this.num=d.num;

      } 發(fā)現(xiàn)Demo繼承Oject已經(jīng)具備了比較對(duì)象的方法,所以沒(méi)有必要再定義新的方法compare了,直接使用equals就可以了,可是Object equals比較的是地址值,不是我們所需的,那就保留的父類(lèi)的功能聲明,建立自身的比較內(nèi)容,這就是覆蓋。Public boolean equals(Object obj){ If(!(Object instanceof Deno))Return false;Demo d=(Demo)obj;向下轉(zhuǎn)型。

      Return this.num=d.num;此處體現(xiàn)了多態(tài)的特性。} Public String toString(){ Return “demo:”+num;} Class ObjectDemo { Public static void main(String[] args){ Demo d1=new Demo(4);Demo d2=new Demo(4);Sop(d1.toString());Sop(d1);Sop(c1.getName());Sop(d1.compare(d2));} }

      4、內(nèi)部類(lèi):

      將一個(gè)類(lèi)定義在另外一個(gè)類(lèi)的里面的類(lèi)稱(chēng)為內(nèi)部類(lèi) 當(dāng)一個(gè)類(lèi)要直接訪(fǎng)問(wèn)另外一個(gè)類(lèi)的成員時(shí),可以將這個(gè)類(lèi)定義到另一個(gè)類(lèi)里面,稱(chēng)為另一個(gè)類(lèi)的內(nèi)部類(lèi)。

      內(nèi)部類(lèi)訪(fǎng)問(wèn)的規(guī)則:

      1、內(nèi)部類(lèi)可以直接訪(fǎng)問(wèn)外部類(lèi)中的成員。

      2、外部類(lèi)需要?jiǎng)?chuàng)建內(nèi)部類(lèi)對(duì)象才可以訪(fǎng)問(wèn)內(nèi)部類(lèi)中的成員。

      在描述事物時(shí),事物中還有具體的事物時(shí),而且這個(gè)內(nèi)部事物在訪(fǎng)問(wèn)著外部的事物時(shí)。這時(shí)對(duì)這個(gè)內(nèi)部事物的描述,就可以用內(nèi)部類(lèi)完成。

      內(nèi)部類(lèi)出于外部類(lèi)的成員位置上是可以被成員修飾符所修飾的。Public

      Private:將內(nèi)部類(lèi)私有化時(shí),只能對(duì)外提供方法,對(duì)內(nèi)部類(lèi)的控制。

      Static:當(dāng)內(nèi)部類(lèi)中定義了靜態(tài)的成員時(shí),該內(nèi)部類(lèi)必須靜態(tài)的,否則編譯失敗。代碼體現(xiàn): Class Outer { Static int num=4;Static class Inner //內(nèi)部類(lèi),為什么要定義內(nèi)部類(lèi)?

      當(dāng)一個(gè)類(lèi)要直接訪(fǎng)問(wèn)另一個(gè)類(lèi)中的成員時(shí)??梢詫⑦@個(gè)類(lèi)定義到另一類(lèi)里面。{ Static void show(){ Sop(“show run”+num);} Public void method(){ Inner in=new Inner();In.,show();} } } Class InnerClassDemo { Public static void main(String[] args){ //Outer out=new Outer();

      //out.method();

      //System.out.println(“Hello World!”);

      //當(dāng)訪(fǎng)問(wèn)一個(gè)外部類(lèi)的內(nèi)部類(lèi)時(shí),先由外部類(lèi)對(duì)象再有內(nèi)部類(lèi)對(duì)象。

      //Outer.Inner in=new Outer().new Inner();//要指明內(nèi)部類(lèi)所處的外部類(lèi)

      //in.show();

      //內(nèi)部類(lèi)靜態(tài)化,要調(diào)用的非靜態(tài)的方法show();

      //Outer.Inner in=new Outer.Inner();

      //in.show();

      //如果show方法也是靜態(tài)的,要調(diào)用靜態(tài)的方法show();

      Outer.Inner.show();} }

      5、匿名內(nèi)部類(lèi):沒(méi)名字的內(nèi)部類(lèi)。

      就是內(nèi)部類(lèi)的簡(jiǎn)化寫(xiě)法。

      前提:內(nèi)部類(lèi)可以繼承或者實(shí)現(xiàn)一個(gè)外部類(lèi)。代碼實(shí)現(xiàn): 格式:

      New 父類(lèi)名or 接口名(){子類(lèi)的具體內(nèi)容} Abstract class AbdsDemo { Abstract void show1();Abstract void show2();} Class Outer { Int num=4;New AbsDemo(){ Void show()//匿名內(nèi)部類(lèi) { Sop(“num===”+num);} }.show();} Public void method2(){ AbsDemo a=new AbsDemo();{ Public void show1();Public void show2();};A.show1();A.show2();//要想調(diào)用兩個(gè)方法,怎么做?起個(gè)名稱(chēng)即可

      當(dāng)里面有多個(gè)方法的時(shí)候建議不要寫(xiě)匿名內(nèi)部類(lèi)。

      }

      -----------------------------interface Inter {

      void show();} class Outer {

      //補(bǔ)足代碼。最好用匿名內(nèi)部類(lèi)

      static Inter method()//為什么是Inter類(lèi)型

      {

      return new Inter()

      {

      public void show()

      {

      System.out.println(“show run”);

      }

      };

      } }

      class InnerClassTest

      {

      public static void main(String[] args)

      {

      Outer.method().show();

      /*

      Outer.method():Outer類(lèi)中有一個(gè)method方法,而且這個(gè)方法是靜態(tài)的。

      Outer.method().show

      會(huì)返回一個(gè)對(duì)象,而且這個(gè)對(duì)象還可以調(diào)用show方法

      說(shuō)明這個(gè)對(duì)象肯定是Inter類(lèi)型。

      */

      } }

      ------------------------------

      6、異常:

      是在運(yùn)行時(shí)期發(fā)生的不正常情況

      Java發(fā)現(xiàn)不正常的情況都包含著一些常見(jiàn)信息,并 將這些信息進(jìn)行了對(duì)象的封裝。異常這種機(jī)制,其實(shí)就是java按照面向?qū)ο蟮乃枷雽⒊霈F(xiàn)的問(wèn)題封裝成了對(duì)象。在進(jìn)行問(wèn)題分析時(shí),發(fā)現(xiàn)問(wèn)題有很多種,但是不斷向上抽取,最終問(wèn)題可以歸納為兩種,一種是可以針對(duì)處理的一種是通常不進(jìn)行處理的。

      在java中的體現(xiàn)一個(gè)是Exception ,一個(gè)是Error,后者一般針對(duì)處理。

      無(wú)論是異常還是錯(cuò)誤,他們都有名稱(chēng)信息等共性的內(nèi)容。

      可以繼續(xù)抽取形成一個(gè)父類(lèi):throwable可拋出。Throwable

      |---Error |---Exception 異常和錯(cuò)誤都有一個(gè)特點(diǎn):其子類(lèi)的名稱(chēng)的后綴名都是父類(lèi)名。

      該體系具備一個(gè)特殊的特性叫做可拋性,該體系中的類(lèi)可以被關(guān)鍵字throws拋出。

      該體系中的類(lèi)產(chǎn)生的對(duì)象可以被Throw拋出,簡(jiǎn)單說(shuō)該體系可以被Throws 和throw操作。

      Throw 和throws的區(qū)別:

      Throws:定義在函數(shù)上,用于聲明函數(shù)的可能出現(xiàn)的問(wèn)題,后面跟異常類(lèi),可以跟多個(gè),用逗號(hào)隔開(kāi)、Throw:定義在函數(shù)內(nèi),用于拋出異常對(duì)象因?yàn)槌绦虻奶D(zhuǎn),后面跟的是異常對(duì)象。

      If判斷和異常處理的區(qū)別:

      If判斷是將正常代碼和異常代碼寫(xiě)在一起。閱讀性極差,異常處理將問(wèn)題代碼和異常處理代碼分離。代碼實(shí)現(xiàn): Class Demo { 功能的定義著在定義工呢過(guò)時(shí),發(fā)現(xiàn)該功能容易因?yàn)槲粗獌?nèi)容的不確定性的出現(xiàn)的問(wèn)題。為了讓調(diào)用者明確,有可能有問(wèn)題,需要在函數(shù)上對(duì)問(wèn)題進(jìn)行聲明。

      需要一關(guān)鍵字throw異常名。

      Int div(int a,int b)throws Exception//拋出異常是為聲明異常問(wèn)題,讓調(diào)用者去處理。{ If(b==0)Throw new ArithmeticException(“除數(shù)為零、違反規(guī)則”);

      Return a/b;} } 對(duì)異常的針對(duì)性處理方式: Try { 需要被檢測(cè)的代碼; } Cathch(異常類(lèi) 變量){ 異常處理代碼 } Finaly { 一定會(huì)被執(zhí)行的代碼。}

      自定義異常:

      Java將常見(jiàn)的問(wèn)題都封裝成了對(duì)象。

      對(duì)于自定義項(xiàng)目中出現(xiàn)的問(wèn)題,java并未給出對(duì)應(yīng)的描述,這時(shí)我們就需要按照面向?qū)ο蟮乃枷胱约和瓿蓪?duì)問(wèn)題的描述和封裝。

      自定義異常:

      需求:在我的程序中,進(jìn)行除法運(yùn)算,除數(shù)不可以為負(fù)數(shù)也不可以為0;對(duì)0這種情況,java中有對(duì)應(yīng)的描述,ArithmeticException 對(duì)于負(fù)數(shù),java中沒(méi)有。只有我們自己定義,定義一個(gè)類(lèi)來(lái)對(duì)異常進(jìn)行描述。

      Class FuShuException extends Exception { Private int num;FuShuException(){} FuShuException(String message,int num){ Super(message);This.,num=num;} Public int getNum(){ Return num;} } Class Demo { Int div(int a,int b)throws FuShuException { If(b<0)Throw new FuShuException(“除數(shù)不可以為負(fù)數(shù)”);函數(shù)內(nèi)拋出異常,函數(shù)上一定要標(biāo)示。函數(shù)內(nèi)拋出是什么?函數(shù)上就標(biāo)示什么? 對(duì)方拋出什么異常,我就處理什么異常。Return a/b;} }

      Class ExceptionDemo2 { Public static void main(String[] aths){ Demo d=new Demo(); Try

      { Int num=d.div(4,-1);Sop(“num=”+num);} Cathc(FuShuException e){ Sop();e.printStackTrace();} Sop(“over”);} }

      自定義應(yīng)用: 異常分兩種:

      1、編譯被檢測(cè)的異常:Exception 這種異常通常都需要進(jìn)行針對(duì)性的處理。

      2、運(yùn)行時(shí)發(fā)生的異常:RuntimeException 對(duì)于運(yùn)行時(shí)異常一般是不編寫(xiě)針對(duì)性的處理方式,如果該異常發(fā)生就讓程序停止,對(duì)程序進(jìn)行修正。因?yàn)檫@種的出現(xiàn)往往已經(jīng)無(wú)法讓程序繼續(xù)運(yùn)算了。

      class Demo {

      int div(int a,int b)throws ArithmeticException

      {

      if(b==0)

      throw new ArithmeticException(“除數(shù)為零”);

      return a/b;

      } } class ExceptionDemo3

      {

      public static void main(String[] args)

      {

      getIndex(null,4);

      }

      public static int getIndex(int[] arr,int key)

      {

      if(arr==null)//進(jìn)行健壯性判斷。

      throw new NullPointerException(“沒(méi)有具體的數(shù)組”);

      for(int x=0;x

      {

      if(arr[x]==key)

      return x;

      }

      return-1;

      }

      public static int getElement(int[] arr,int index)

      {

      if(arr==null)

      throw new NullPointerException(“沒(méi)有具體的數(shù)組實(shí)例”);

      if(index<0||index>=arr.length)

      throw new ArrayIndexOutOfBoundsException(“角標(biāo)越界”);

      return arr[index];

      } }-------------------異常練習(xí):

      /* 需求:

      畢老師用電腦上課。按照面向?qū)ο笏枷雭?lái)描述。名詞提煉法

      上課過(guò)程中出現(xiàn)的問(wèn)題:

      1、電腦藍(lán)屏了。

      2、電腦冒煙了。

      */ class LanPinException extends Exception {

      LanPinException(String message)

      {

      super(message);

      } } class MaoYanException extends Exception {

      MaoYanException(String message)

      {

      super(message);

      }

      } class NoPlanException extends Exception {

      NoPlanException(String message)

      {

      super(message);

      } } class Computer {

      private int state=2;

      public void run()throws LanPinException,MaoYanException

      {

      if(state==1)

      throw new LanPinException(“電腦藍(lán)屏了”);

      if(state==2)

      throw new MaoYanException(“電腦冒煙了”);

      System.out.println(“電腦運(yùn)行”);

      }

      public void reset()

      {

      System.out.println(“電腦重啟”);

      state=0;

      } } class Teacher {

      private String name;

      private Computer cmpt;

      Teacher(String name)

      {

      cmpt=new Computer();

      this.name=name;

      }

      public void prelect()throws NoPlanException//此處冒煙是電腦發(fā)生的,能再老師講課的功能出現(xiàn)這樣的異常么?所以?huà)伋龅膶?duì)象不對(duì),老師只能耽誤了講課的進(jìn)度,所以此時(shí)是否應(yīng)該定義一個(gè)關(guān)于講課進(jìn)度的類(lèi)來(lái)封裝這個(gè)問(wèn)題。

      {

      try

      {

      cmpt.run();

      System.out.println(name+“畢老師講課”);

      }

      catch(LanPinException e)

      {

      System.out.println(e.getMessage());

      cmpt.reset();

      prelect();

      }

      catch(MaoYanException e)//這個(gè)功能我處理不了,因?yàn)槊盁煵粫?huì)了,這時(shí)候需要拋出。

      {

      test();

      //throw e;//因?yàn)樘幚聿涣?,繼續(xù)往外拋。此時(shí)在講課方法上要聲明。此處也不能拋出這個(gè)異常。因?yàn)槊盁熓请娔X運(yùn)行時(shí)的,不是老師講課的。

      throw new NoPlanException(“課時(shí)無(wú)法繼續(xù)進(jìn)行”);

      }

      }

      public void test()

      {

      System.out.println(“練習(xí)”);

      } } class ExceptionTest {

      public static void main(String[] args)

      {

      Teacher t=new Teacher(“畢老師”);

      try

      {

      t.prelect();

      }

      catch(NoPlanException e)

      {

      System.out.println(“換人”);

      }

      } } //到底什么是拋什么處理?

      /*

      自己能解決的就處理,處理不了就拋。

      比如著火了,小火的時(shí)候自己可以處理,比如滅火器等

      當(dāng)火勢(shì)大了,就處理不了,只能交給消防隊(duì),自己要跑。

      */

      第四篇:黑馬程序員java培訓(xùn)就業(yè)班筆記:day09總結(jié)

      Day09總結(jié): 上午:

      1、final關(guān)鍵字:

      Eg:代碼實(shí)現(xiàn):

      Class Fu { Final void method(){

      //code...訪(fǎng)問(wèn)低層代碼

      } } Class Zi extends Fu { Void method()

      {

      Sop(“haha”);} } 以上代碼體現(xiàn)出繼承的弊端,因?yàn)楦割?lèi)的method的方法訪(fǎng)問(wèn)了系統(tǒng)的低層代碼。當(dāng)子類(lèi)對(duì)其覆寫(xiě),就不會(huì)去訪(fǎng)問(wèn)父類(lèi)的meth的方法,直接用自己的method這樣就出現(xiàn)了代碼的不嚴(yán)謹(jǐn)性,所以此時(shí)需要用final關(guān)鍵字進(jìn)行修飾。注意為什么不把類(lèi)加final修飾,因?yàn)榭赡茉擃?lèi)中會(huì)出現(xiàn)很多功能。有些是不需要被覆寫(xiě)的。有些是被調(diào)用的。所以只能根據(jù)自己所需對(duì)相應(yīng)的成員進(jìn)行修飾。

      2、Final的特點(diǎn):

      1、final是一個(gè)修飾符,可以修飾類(lèi)、方法、變量(成員變量、局部變量)

      2、Final修飾的類(lèi)不可以被繼承。

      3、Final修飾的方法不可以被覆蓋。

      4、Final修飾的變量是一個(gè)常量,只能被賦值一次。是為了增強(qiáng)閱讀性,只要數(shù)據(jù)是固定的,就將這個(gè)數(shù)據(jù)用一個(gè)名稱(chēng)來(lái)表示,并用final修飾。常量名稱(chēng)都是大寫(xiě)字母,多個(gè)單詞組成時(shí)用下劃線(xiàn)來(lái)分隔。

      代碼體現(xiàn):

      Eg:

      Class Zi { Static final int num=90;//必須對(duì)變量進(jìn)行初始化,不知道要最終化哪個(gè)值,所以必須對(duì)它進(jìn)行初始化。加靜態(tài)也是一樣的,同樣的道理,并且被初始化,此時(shí)靜態(tài)和final沒(méi)有必然的聯(lián)系。當(dāng)變量被final修飾時(shí),說(shuō)明變量已經(jīng)是一個(gè)常量值,此時(shí)不能被修飾,可以用static來(lái)修飾。

      Public stati double PI=3.14;Void method(){

      Final int x=4;

      X=8;

      Sop(num);//既然是在操作一個(gè)固定的值。為什么不把4直接寫(xiě)在此處,如果這樣做的的話(huà),閱讀性極差,你根本就不知道它所代表什么?為了增強(qiáng)閱讀性,此時(shí)數(shù)據(jù)是不變化的,所以我們需要給它起個(gè)名字,并且用final來(lái)修飾。這樣的話(huà)它也是固定的不變的。

      注意:被final修飾的數(shù)值只能被覆寫(xiě)一次,并且修飾的常量名全部大寫(xiě),多個(gè)單詞組成時(shí)用下劃線(xiàn)進(jìn)行分隔。Eg:final int PERSON_AGE=4;} }

      3、抽象類(lèi):

      特點(diǎn):

      1、沒(méi)有方法體的方法,稱(chēng)為抽象方法,必須存放在抽象方法類(lèi)中,抽象方法和抽象類(lèi)必須用abstract關(guān)鍵字來(lái)修飾,2、抽象類(lèi)不可以被實(shí)例化,為什么?因?yàn)檎{(diào)用抽象方法沒(méi)有意義?為什么?因?yàn)樗B方法體都不存在?

      3、抽象類(lèi)必須由其子類(lèi)將抽象類(lèi)中的抽象方法都覆蓋后,其子類(lèi)才可以被實(shí)例化,否則該子類(lèi)還是抽象類(lèi)。Eg: Abstract class Demo { Abstract void show();} Class SubDemo extends Demo

      Void show(){} //此時(shí)把父類(lèi)中抽象方法覆蓋,此時(shí)才能被實(shí)例化。} 比如水果,它就是抽象的,不具體它包含各種各樣的水果,每種水果有它自己的體現(xiàn)。

      抽象類(lèi)涉及的問(wèn)題?

      1、抽象類(lèi)中是否可以定義非抽象的方法?

      可以 首先抽象類(lèi)是一個(gè)類(lèi),類(lèi)是用來(lái)描述事物,只不過(guò)描述事物過(guò)程中有些信息不具體,抽象類(lèi)和一般類(lèi)異同點(diǎn):

      相同:抽象類(lèi)和一般類(lèi)都用于描述事物,都可以定義成員。不同:抽象類(lèi)中可以定義抽象成員函數(shù),(抽象要么修飾類(lèi)要么修飾函數(shù))而一般類(lèi)不可以。

      抽象類(lèi)不可以實(shí)例化,一般類(lèi)可以實(shí)例化。

      2、抽象類(lèi)中是否有構(gòu)造函數(shù)?

      有,而且抽象類(lèi)雖然自身不可以被實(shí)例化,但是其子類(lèi)覆蓋了所有的抽象方法后,是可以實(shí)例化的。所以抽象類(lèi)的構(gòu)造函數(shù)是用于給其子類(lèi)對(duì)象進(jìn)行實(shí)例化。

      3、抽象類(lèi)通常都是一個(gè)父類(lèi)?

      是、因?yàn)樾枰宇?lèi)去覆蓋父類(lèi)中的抽象方法。代碼體現(xiàn):

      Abstract class Demo{ Abstract voif show1();Abstract void show2();} Abstract class SubDemo extends Demo { Void show1();} Class Test extends SubDmeo { Void show2();}

      4、抽象類(lèi)中可不可以不定義抽象方法?

      可以;看上去沒(méi)有什么意義,其實(shí)有點(diǎn)意義,就是不讓這個(gè)類(lèi)創(chuàng)建對(duì)象,為什么不讓創(chuàng)建? 代碼體現(xiàn):

      interface InterTest//這是一個(gè)測(cè)試接口,有4種測(cè)試方式。

      { void test1();void test2();void test3();void test4();

      } abstract class InterTestImpl implements InterTest//用這個(gè)類(lèi)進(jìn)行所有的空實(shí)現(xiàn)。但是創(chuàng)建對(duì)象是毫無(wú)意義的。所以用抽象。

      {

      public void test1(){}

      public void test2(){}

      public void test3(){}

      public void test4(){} }

      class Test2 extends InterTestImpl

      { public void test2(){}

      }

      class Test3 extends InterTestImpl

      { public void test3(){}

      }

      /*

      class InterTestImpl implements InterTest

      {

      public void test2()//

      {

      sop(“testimpl test2”);

      }

      public void test1(){}//這樣做實(shí)現(xiàn)太麻煩。代碼重復(fù)。如何改進(jìn)?

      public void test3(){}

      public void test4(){}

      }

      */

      5、抽象關(guān)鍵字 不可以和那些關(guān)鍵字共存?

      Final:修飾了類(lèi)是一個(gè)最終類(lèi),不可以被繼承,然后abstract修飾的類(lèi)必須是父類(lèi),需要被繼承、沖突、非法的修飾符組合,abstract 和final Static:抽象方法被static修飾,就具備了可以被類(lèi)名直接調(diào)用的的特點(diǎn),但是抽象方法被調(diào)用沒(méi)有意思。

      Priavte:因?yàn)槌橄蠓椒ū凰接校瑹o(wú)法被覆蓋。

      代碼體現(xiàn): 雇員實(shí)例:

      需求:公司中程序員有姓名、工號(hào)、薪水、工作內(nèi)容。

      項(xiàng)目經(jīng)理除了姓名、工號(hào)、薪水、還有獎(jiǎng)金、工作內(nèi)容

      進(jìn)行數(shù)據(jù)建模

      做問(wèn)題領(lǐng)域的分析就是找出問(wèn)題領(lǐng)域的對(duì)象。

      分析: 在這個(gè)問(wèn)題領(lǐng)域中有兩個(gè)對(duì)象: 程序員:

      屬性:姓名,工號(hào),薪水

      行為:工作內(nèi)容 項(xiàng)目經(jīng)理:

      屬性:姓名、工號(hào)、薪水、獎(jiǎng)金

      行為:工作內(nèi)容。

      這時(shí)候不能用項(xiàng)目經(jīng)理去繼承程序員。因?yàn)槁毮懿煌?,但是有共性,只能抽取?/p>

      就有了員工:

      屬性:姓名,工號(hào),薪水

      行為:工作內(nèi)容

      */ abstract class Employee

      { private String name;private String id;private double pay;Employee(String name,String id,double pay){

      this.name=name;

      this.id=id;

      this.pay=pay;} public abstract void work();//工作內(nèi)容是無(wú)法知道的。} class Programmer extends Employee { Programmer(String name,String id,double pay){

      super(name,id,pay);} public void work(){

      System.out.println(“code”);}

      }

      class Manager extends Employee { private double bonus;Manager(String name,String id,double pay){

      super(name,id,pay);

      this.bonus=bonus;} public void work(){

      System.out.println(“manage”);} }

      4、接口:

      格式:interface{} 表現(xiàn)特點(diǎn):

      1、里面的方法都是抽象的。

      2、接口中的成員都有固定的修飾符,最常見(jiàn)的成員:全局常量抽象方法。只是最常見(jiàn),不代表只有它們沒(méi)有其他的,全局常量,共有的不需要對(duì)象,直接用接口調(diào)用的,不可變的。

      表現(xiàn)形式:Public static final

      抽象方法:public abstract

      3、接口的成員都是public的。

      4、接口是不可以創(chuàng)建對(duì)象的。就相當(dāng)于是抽象的特殊表達(dá)形式。(但是有區(qū)別和抽象類(lèi))

      5、類(lèi)與類(lèi)之間是繼承關(guān)系,類(lèi)與接口之間是實(shí)現(xiàn)關(guān)系。

      6、接口的出現(xiàn)可以多實(shí)現(xiàn),避免了單繼承的局限性。

      7、一個(gè)類(lèi)在繼承一個(gè)類(lèi)的同時(shí),還可以實(shí)現(xiàn)多個(gè)接口、8、接口與接口之間是繼承關(guān)系,而且可以多繼承,以為接口的方法都沒(méi)有主體。思想特點(diǎn):

      1、對(duì)外暴露的規(guī)則。

      外設(shè)要介入計(jì)算機(jī)中,因?yàn)橛?jì)算機(jī)外面提供了接口,這就是規(guī)則。

      2、程序的功能擴(kuò)展

      3、降低了耦合性

      4、用來(lái)多實(shí)現(xiàn)

      結(jié)合電腦主板的思想進(jìn)行闡述,它是個(gè)規(guī)則。對(duì)外提供的規(guī)則 它提高了我們功能的擴(kuò)展性,降低了耦合性。主板和聲卡:主板使用規(guī)則,聲卡實(shí)現(xiàn)規(guī)則。

      與抽象類(lèi)的區(qū)別:抽象類(lèi)有單繼承的局限性,接口沒(méi)有

      5、java對(duì)多繼承記住改良,以多現(xiàn)實(shí)接口的方式來(lái)體現(xiàn)。差別:多繼承因?yàn)楦割?lèi)中有相功能時(shí),會(huì)造成不確定性。為什么可以實(shí)現(xiàn)多實(shí)現(xiàn)?

      因?yàn)槔^承中父類(lèi)的方法有方法體?這才是造成不確定性的根本原因,而此處是沒(méi)有方法體的。

      代碼體現(xiàn):

      interface A {

      //int show();//這樣是不可以的。無(wú)法覆蓋。

      void show();} interface B {

      // void method();

      void show();//當(dāng)有重復(fù)的方法時(shí)。但是此時(shí)子類(lèi)復(fù)寫(xiě)它是可以的,為什么?

      //因?yàn)槔^承中父類(lèi)的方法有方法體。這才是造成不確定性的根本原

      因。而

      //此處是沒(méi)有方法體的。

      } class C extends D implements A,B//多實(shí)現(xiàn)。此時(shí)c必須覆蓋兩個(gè)方法

      {

      public void show(){}

      //public void method(){}

      } //一個(gè)類(lèi)在繼承一個(gè)的類(lèi)的時(shí)候還可實(shí)現(xiàn)多實(shí)現(xiàn)

      class D

      {

      public void function();} //接口之間是可以繼承,而且支持多繼承。

      interface InterA {

      void showA();} interface InterB {

      void showB();} interface InterC extends InterA,InterB//為什么此處可以實(shí)現(xiàn)多繼承,因?yàn)榉椒](méi)有主體。

      {

      void showC();}

      class InterfaceDemo2

      {

      public static void main(String[] args)

      {

      C c=new C();

      c.show();

      System.out.println(“Hello World!”);

      }

      }

      6、抽象類(lèi)和接口之間的區(qū)別:

      共性:它們都是不斷抽取出來(lái)的抽象非概念

      區(qū)別:

      1、抽象類(lèi)只能被單繼承、接口可以被多實(shí)現(xiàn),避免了單繼承的局限性。

      2、抽象類(lèi)中可以定義抽象方法,和非抽象方法,它可以用于定義體系的基本共性的內(nèi)容。接口中只能定義抽象方法,它主要用于對(duì)象的功能的擴(kuò)展。

      3、抽象類(lèi)是繼承關(guān)系,是is a關(guān)系,接口是實(shí)現(xiàn)關(guān)系是like a關(guān)系。

      4、抽象類(lèi)中的成員修飾符都是自定義的,接口中的修飾符都是固定的。記?。翰灰呀涌讵M義的理解為interface,應(yīng)該理解廣義些,就是對(duì)外提供的規(guī)則,凡是對(duì)外暴露的都可以是接口。

      實(shí)現(xiàn)代碼:

      1、abstract class 犬

      { public abstract void 吃飯();

      public abstract void 吼叫();

      }

      interface 搜爆

      { public void 搜爆();

      }

      class 搜爆犬 extends 犬 implements 搜爆//這是即具備了犬的基本特性,又具備了搜爆功能。

      { public void 搜爆(){} public void 吃飯(){}

      public void 吼叫(){}

      }

      class 搜爆貓 extends 貓 implements 搜爆

      { public void 搜爆(){}

      }

      記?。?類(lèi)里面都是定義的一些基礎(chǔ)內(nèi)容,接口里面都是定義一些特性?xún)?nèi)容,這樣的方便了對(duì)其進(jìn)行擴(kuò)展。

      //抽煙的學(xué)生,抽煙是額外功能。

      2、abstract class Student

      { abstract void study();

      }

      interface Smoking

      { void smoke();

      }

      class SomkeStudent extends Student implements Smoking

      { public void study(){}

      public void smoke(){}

      }

      //煙民。學(xué)生煙民 問(wèn)題領(lǐng)域不同,對(duì)象的屬性和行為也不同。

      abstract class Somker

      {

      abstract void smoke();

      }

      interface Study

      { void study();

      }

      class StudentSmoker extends Smoker implements Study

      { public void smoke(){} public void study(){}

      }

      7、多態(tài):重點(diǎn)掌握

      定義:某一類(lèi)事物的多種存在形態(tài)。代碼實(shí)現(xiàn):

      class 動(dòng)物

      {}

      class 貓 extends 動(dòng)物

      {

      }

      貓 x=new 貓();

      動(dòng)物 y=new 貓();//父類(lèi)的引用變量指向了其子類(lèi)的對(duì)象。

      多態(tài)在代碼中的體現(xiàn),父類(lèi)或者接口的引用指向了自己的子類(lèi)對(duì)象。

      實(shí)現(xiàn)代碼:

      class Animal

      { abstract void eat();

      }

      class Dog extends Animal

      { void eat(){

      sop(“啃骨頭”);} void lookHome()

      {

      sop(“看家”);}

      }

      class Cat extends Animal

      { void eat(){

      sop(“吃魚(yú)”);} void catchMouse(){

      sop(“抓老鼠”);}

      }

      class Pig extends Animal

      { void eat(){

      sop(“豬飼料”);} void gongdi(){

      sop(“拱地”);}

      } class DuoTaiDemo { public static void main(String[] args){

      //Cat c=new Cat();

      //c.eat();

      //Cat c1=new Cat();

      //c1.eat();

      //method(c);

      //method(c1);

      重要知識(shí)點(diǎn):----開(kāi)發(fā)都用!

      Animal a=new Cat();//此處貓對(duì)象類(lèi)型自動(dòng)向上提升---向上轉(zhuǎn)型,當(dāng)指向使用體系基本功能時(shí),可以向上轉(zhuǎn)型操作。

      為什么體現(xiàn)多態(tài)性?

      首先貓是一個(gè)實(shí)體,是一個(gè)貓類(lèi)型,因?yàn)橛辛死^承,是動(dòng)物中的一種,把這個(gè)實(shí)體稱(chēng)之為動(dòng)物也可以,所以它具備了兩種形態(tài),貓和動(dòng)物。這便是體現(xiàn)了多態(tài)性。

      //一旦向上轉(zhuǎn)型,貓就不是貓了,已經(jīng)是動(dòng)物類(lèi)型了。

      a.catchMouse();//編譯失敗。

      但是現(xiàn)在想執(zhí)行貓的抓老鼠的功能怎么辦?

      向下轉(zhuǎn)型:

      Cat c=(Cat)a;//向下轉(zhuǎn)型。當(dāng)使用子類(lèi)對(duì)象中的特有內(nèi)容時(shí),才做向下轉(zhuǎn)型。

      c.eat();

      c.catchMouse();//此時(shí)是可以實(shí)現(xiàn)貓的抓老鼠的功能的。

      總結(jié):在多態(tài)轉(zhuǎn)型中,至始至終只有子類(lèi)對(duì)象做著類(lèi)型的變化。

      method(new Cat());

      } public static void method(Animal a)//Animal a=new Cat();{

      重點(diǎn)知識(shí)點(diǎn):instanceof

      if(a instanceof Cat)//對(duì)象instanceof 類(lèi)型 判斷具體對(duì)象是否是指定的類(lèi)型。

      {

      Cat c=(Cat)a;//編譯通過(guò),但是不能運(yùn)行,此時(shí)類(lèi)型轉(zhuǎn)換異常classCastException;

      //此時(shí)為了程序的嚴(yán)謹(jǐn)性,需要對(duì)傳入的的對(duì)象進(jìn)行判斷。

      c.catchMouse();

      }

      else if(a instanceof Dog)

      {

      Dog d=(Dog)a;

      d.lookHome();

      }

      a.eat();

      總結(jié):

      instanceof是一個(gè)關(guān)鍵字,用于判斷對(duì)象的類(lèi)型。什么時(shí)候用?

      當(dāng)進(jìn)行向下轉(zhuǎn)型時(shí),先判斷該對(duì)象是否符合被轉(zhuǎn)成的子類(lèi)型。

      } }

      8、重點(diǎn)理解:

      1、多態(tài)的好處:提高了代碼的擴(kuò)展性,有了多態(tài),前期設(shè)計(jì)好的內(nèi)容可以使用后期出現(xiàn)的子類(lèi)內(nèi)容,對(duì)于指揮對(duì)象做事情這件事情,如果對(duì)象很多,指揮起來(lái)很麻煩,抽取對(duì)象的共性類(lèi)型,對(duì)該類(lèi)型的事物進(jìn)行指揮就會(huì)變的很簡(jiǎn)單。

      2、多態(tài)的前提:

      1、必須要有關(guān)系:繼承、實(shí)現(xiàn)。

      2、必須有覆蓋的操作。

      3、多態(tài)的弊端:前期的程序雖然可以使用后期出現(xiàn)的子類(lèi)內(nèi)容,但是只能使用子類(lèi)覆蓋父類(lèi)中的內(nèi)容,不能使用子類(lèi)中的特有內(nèi)容。

      第五篇:黑馬程序員java培訓(xùn)就業(yè)班筆記:day14(多線(xiàn)程、String類(lèi))總結(jié)

      Day14總結(jié):

      1、wait和sleep的區(qū)別:(面試題)

      1、sleep指定時(shí)間,wait可以指定時(shí)間,也可以不用指定時(shí)間。

      2、wait方法必須定義在同步中,sleep方法不一定。

      3、在同步中wait sleep對(duì)于執(zhí)行權(quán)和鎖的處理不同: i.Sleep釋放CPU執(zhí)行權(quán),但是沒(méi)有釋放鎖。ii.Wait釋放執(zhí)行權(quán)、釋放鎖。實(shí)現(xiàn)代碼: Public void run(){ Synchronized(this){ Code…sleep(10);//此線(xiàn)程進(jìn)入凍結(jié)狀態(tài),釋放了執(zhí)行權(quán),并沒(méi)有釋放鎖。

      Wait();//等待狀態(tài)下,釋放執(zhí)行權(quán)、釋放鎖,因?yàn)樗枰粚?duì)象喚醒,所以要釋放鎖

      } } Public void method(){ Synchronized(this){

      notifyAll();//喚醒上面所有的線(xiàn)程。但是此時(shí)t0、t1并沒(méi)有執(zhí)行,因?yàn)殒i還在此線(xiàn)程中,只有當(dāng)它執(zhí)行完畢之后,釋放鎖。它們獲取鎖之后才有機(jī)會(huì)執(zhí)行。

      } }

      2、停止線(xiàn)程:

      1、Stop方法已經(jīng)過(guò)時(shí),為什么?因?yàn)樵摲椒ň哂胁还潭ǖ陌踩浴?/p>

      如何停止線(xiàn)程? 只有一種方法:

      線(xiàn)程執(zhí)行的代碼結(jié)束,線(xiàn)程會(huì)自動(dòng)終止。

      1、run方法中通常有循環(huán),所以只要循環(huán)結(jié)束即可。所以只要控制循環(huán)條件。最簡(jiǎn)單的方式就是定義標(biāo)記。

      2、如果run中有同步可以讓線(xiàn)程出現(xiàn)凍結(jié)狀態(tài)的方法,比如wait那么線(xiàn)程就不會(huì)去讀取標(biāo)記。這時(shí)必須讓線(xiàn)程恢復(fù)到運(yùn)行狀態(tài)才可以有機(jī)會(huì)讀取到標(biāo)記,所以通過(guò)正常的恢復(fù)方法比如notify、sleep時(shí)間到,但是如果沒(méi)有辦法正常恢復(fù),就必須使用強(qiáng)制手段,interrupt方法,強(qiáng)制將線(xiàn)程的凍結(jié)狀態(tài)清除,讓線(xiàn)程恢復(fù)運(yùn)行。其實(shí)就是讓線(xiàn)程重新獲取讀取標(biāo)記、結(jié)束。但是別忘了強(qiáng)制動(dòng)作會(huì)產(chǎn)生異常要處理。實(shí)現(xiàn)代碼:

      StopThreadDemo.java

      class StopThread implements Runnable

      { private boolean flag=true;//定義標(biāo)記控制住循環(huán)。public synchronized void run(){ while(flag)//開(kāi)始true、此時(shí)定義標(biāo)記控制循環(huán)。

      {

      try

      {

      wait();//當(dāng)存在同步時(shí),wait方法不會(huì)讓線(xiàn)程去讀取標(biāo)記。此時(shí)主線(xiàn)程結(jié)束了,但是這兩個(gè)線(xiàn)程卻在這里等待了。并沒(méi)有結(jié)束。

      }

      catch(InterruptedException e)

      {

      System.out.println(Thread.currentThread().getName()+“....Exception”);

      setFlag();//如果發(fā)生了強(qiáng)制中斷,只要把狀態(tài)切斷到假。

      }

      System.out.println(Thread.currentThread().getName()+“...”);} } public void setFlag(){ flag=false;} }

      class StopThreadDemo { public static void main(String[] args){ StopThread st=new StopThread();Thread t1=new Thread(st);Thread t2=new Thread(st);t1.start();t2.setDaemon(true);//標(biāo)記成了守護(hù)線(xiàn)程。

      t2.start();

      for(int x=0;;x++){

      if(x==50)

      {

      st.setFlag();

      t1.interrupt();//t1將它的凍結(jié)狀態(tài)強(qiáng)制結(jié)束。

      t2.interrupt();//中斷方法。其實(shí)不是中斷線(xiàn)程。而且還拋出了異常。

      //其實(shí)會(huì)將凍結(jié)中的線(xiàn)程強(qiáng)行恢復(fù)到運(yùn)行狀態(tài),就會(huì)讀到標(biāo)記。這就是中斷線(xiàn)程。并不是結(jié)束線(xiàn)程。一定要注意要區(qū)分。

      //

      break;

      }

      System.out.println(Thread.currentThread().getName()+“....”);}

      System.out.println(“Hello World!”);} }

      3、守護(hù)線(xiàn)程:setDaemon();線(xiàn)程標(biāo)記,守護(hù)線(xiàn)程,當(dāng)正在運(yùn)行的線(xiàn)程是守護(hù)線(xiàn)程時(shí),JVM自動(dòng)退出,該方法在開(kāi)啟之前調(diào)用,也就是說(shuō)在start方法之前調(diào)用。

      線(xiàn)程分兩種:

      前臺(tái)線(xiàn)程:自己創(chuàng)建的線(xiàn)程都是前臺(tái)線(xiàn)程。

      后臺(tái)線(xiàn)程:一旦調(diào)用了此方法為守護(hù)線(xiàn)程之后的線(xiàn)程都是守護(hù)線(xiàn)程。

      區(qū)別:都是線(xiàn)程,啟動(dòng)后都再搶奪CPU的執(zhí)行權(quán),這里是沒(méi)有區(qū)別的,最大的區(qū)別就是如果線(xiàn)程結(jié)束了,正在運(yùn)行的后臺(tái)線(xiàn)程也隨著結(jié)束,簡(jiǎn)單的說(shuō)后臺(tái)線(xiàn)程是以來(lái)前臺(tái)線(xiàn)程而執(zhí)行的。

      4、線(xiàn)程細(xì)節(jié):

      1、join:當(dāng)A線(xiàn)程執(zhí)行到B線(xiàn)程時(shí),那么A線(xiàn)程就會(huì)等待,等B執(zhí)行完畢,A才會(huì)執(zhí)行。

      代碼實(shí)現(xiàn):

      D1.join();d1加入,說(shuō)明了主線(xiàn)程必須先釋放執(zhí)行權(quán)給它,等到d1結(jié)束之后主線(xiàn)程才恢復(fù)執(zhí)行狀態(tài),所以輸出結(jié)果是等d1全部都執(zhí)行完畢之后,才有其他線(xiàn)程的交替執(zhí)行。

      記?。赫l(shuí)把執(zhí)行權(quán)給了誰(shuí),就只和給的對(duì)象的執(zhí)行權(quán)有關(guān),等它結(jié)束之后,就會(huì)重新獲取執(zhí)行

      記住:主線(xiàn)程是因?yàn)檎l(shuí)放棄了執(zhí)行權(quán),就只和那個(gè)線(xiàn)程有關(guān)系權(quán),與其他線(xiàn)程無(wú)關(guān)。

      2、優(yōu)先級(jí):代表?yè)寠Z資源的頻率。有兩種方法:getPriority setPriority來(lái)獲取優(yōu)先級(jí)和設(shè)置優(yōu)先級(jí),只有十個(gè)數(shù)字可以使用1-10這十個(gè)數(shù)字,同時(shí)線(xiàn)程中提供了幾個(gè)特殊的方法: 線(xiàn)程類(lèi)中提供了MAX_PRIORITY MIN_PRIORTY NORM_PRIORTY。

      3、yield:結(jié)束該線(xiàn)程,釋放執(zhí)行權(quán)。

      4、toString();獲取線(xiàn)程詳細(xì)信息,包括線(xiàn)程組、線(xiàn)程名、所屬線(xiàn)程。實(shí)現(xiàn)代碼:ThreadMethodDemo.java

      5、string類(lèi):

      1、字符串的特點(diǎn):

      1、java中用String類(lèi)來(lái)描述字符串。

      2、字符串是一個(gè)特殊的對(duì)象,一旦初始化就不可以被改變,因?yàn)槭浅A?。面試題1: String s=“abc”;String s1=new Strng(“abc”);是否相同?

      前者“abc”是一個(gè)對(duì)象。后者是兩個(gè)對(duì)象,new string()代表一個(gè)對(duì)象,“abc”也代表一個(gè)對(duì)象。

      Sop(s1==s2);==比較的是數(shù)據(jù)。false Sop(s1.equals(s2));比較的是內(nèi)存的地址值,equals覆寫(xiě)了Object類(lèi)中的equals方法。True

      面試題2: String a=“abcd”;//在緩沖池創(chuàng)建了一個(gè)abcd的字符串。String a1=“ab”;//a1和a2都是變量,無(wú)法確定。

      String a2=“cd”;String b=a1+a2;//b是要重新進(jìn)行分配的。

      String c=“ab”+“cd”;//兩個(gè)都是常量值,用連接符連接在一起還是字符創(chuàng)。abcd System.out.println(“a==b:”+(a==b));//false System.out.println(“a==c:”+(a==c));//true

      2、常見(jiàn)操作方法:

      1、獲?。?/p>

      a)獲取長(zhǎng)度:

      Int length();數(shù)組長(zhǎng)度是個(gè)屬性,字符串是個(gè)方法 b)獲取字符串中的字符:

      charAt(int index);返回值是一個(gè)字符。

      c)一個(gè)字符或者一個(gè)字符串在一個(gè)字符串中的位置

      Int indexof(int ch)Int indexof(int ch,int fromIndex)Int indexof(ch,fromIndex)Int indexof(srting,fromindex)Int lastIndexof(ch);注意:這些獲取索引位的方法,如果沒(méi)有查找的內(nèi)容,返回-1,所以這個(gè)方法。

      d)獲取部分字符串:

      String substring(begin,end)

      2、判斷:

      a)是否包含指定的字符串

      Boolean contains(String)

      b)是否是以指定的字符串開(kāi)頭

      Boolean startsWith(String)c)是否是以指定的字符串結(jié)尾

      Boolean endwith(String)d)忽略大小寫(xiě)判斷字符串

      Boolean equalsIgnoreCase(string)

      3、轉(zhuǎn)換:

      a)將字符串轉(zhuǎn)成大小寫(xiě)

      String toLowerCase();String toUpperCase();b)將字符串轉(zhuǎn)成數(shù)組

      Byte[] getBytes();Char[] getChar();c)將字符串轉(zhuǎn)成字符串?dāng)?shù)組

      String[] d)將字符串中的內(nèi)容進(jìn)行替換

      String replace(oldch1,new ch2)String replace(string1,string2)e)去除字符串兩端的空白

      Trim();如何查閱API文檔的小技巧,先查找返回值類(lèi)型,縮小查找范圍。實(shí)現(xiàn)代碼:

      ublic static void main(String[] args){

      // stringMethod4();

      String str = “

      ab c

      ”;

      System.out.println(“-”+str.trim()+“-”);

      String s = String.valueOf(4);

      System.out.println(4+“");

      System.out.println(”ab“+”cd“);

      System.out.println(”ab“.concat(”cd“));

      }

      private static void stringMethod4(){

      String str = ”lisi.wangwu.zhaoliu“;

      } String[] strs = str.split(”.“);for(int i = 0;i < strs.length;i++){ System.out.println(strs[i]);}

      str = ”hello“;

      String s = str.replace('a', 'k');

      System.out.println(”s=“+s);System.out.println(str);private static void stringMethod3(){

      String str = ”aBCd“;

      String s = str.toLowerCase();System.out.println(s);String s1 = str.toUpperCase();System.out.println(s1);

      System.out.println(str);

      char[] arr = str.toCharArray();

      for(int x = 0;x

      System.out.println(arr[x]);} } private static void stringMethod2(){

      String str = ”ThreadDemo.java“;

      System.out.println(”contains(Demo):“+str.contains(”Demo“));System.out.println(”starsWith(Thread):“+str.startsWith(”Thread“));System.out.println(”endsWith(.java):“+str.endsWith(”.java“));System.out.println(”isEmpty:“+str.isEmpty());str = ”abc“;說(shuō)

      System.out.println(str.equalsIgnoreCase(”abC“));}

      private static void stringMethod(){

      String str = ”abcdaef“;System.out.println(”length;“+str.length());

      System.out.println(”charAt(2):“+str.charAt(2));

      System.out.println(”indexOf(a):“+str.indexOf('a',2));

      System.out.println(”lastIndexOf(a):“+str.lastIndexOf('k'));

      System.out.println(”substring(1,3):"+str.substring(0,str.length()));}

      下載黑馬程序員java培訓(xùn)就業(yè)班筆記:day06總結(jié)word格式文檔
      下載黑馬程序員java培訓(xùn)就業(yè)班筆記:day06總結(jié).doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶(hù)自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        【黑馬程序員】Java基礎(chǔ) : Java語(yǔ)句筆記

        【黑馬程序員】Java基礎(chǔ) : Java語(yǔ)句筆記 摘要: Java基礎(chǔ)—java語(yǔ)句這些是黑馬程序員java基礎(chǔ)入門(mén)的一個(gè)很重要的內(nèi)容。今天主要給大家簡(jiǎn)單講解一下Java基礎(chǔ)—java語(yǔ)句,以后會(huì)......

        【黑馬程序員】Java基礎(chǔ)總結(jié)

        【黑馬程序員】Java基礎(chǔ)總結(jié) 黑馬程序員的javaEE課程主要分為2個(gè)部分:java基礎(chǔ)+java就業(yè)。今天就簡(jiǎn)單的給大家總結(jié)一下咱們java基礎(chǔ)的知識(shí)。 注:Java采用Unicode符號(hào)集,每個(gè)......

        黑馬程序員:Java集合簡(jiǎn)單總結(jié)

        黑馬程序員:Java集合簡(jiǎn)單總結(jié) 在Java語(yǔ)言中,學(xué)好集合是非常重要的,下面簡(jiǎn)單的對(duì)集合進(jìn)行總結(jié),以便大家學(xué)習(xí),有問(wèn)題再相互交流。 集合框架圖 在集合框架圖中可以看出,Collection接......

        【黑馬程序員】Java之debug總結(jié)三

        【黑馬程序員】Java之debug總結(jié)三 之前寫(xiě)了"Java之debug總結(jié)一","Java之debug總結(jié)二"共總結(jié)了5種debug方式,現(xiàn)在簡(jiǎn)紹第6種,不足之處,敬請(qǐng)指正:(源碼在文章末尾處) 本文以chr......

        【黑馬程序員】Java之debug總結(jié)二

        【黑馬程序員濟(jì)南】Java之debug總結(jié)二 之前詳細(xì)描述了4種debug方式,現(xiàn)在簡(jiǎn)紹第5種,不足之處,敬請(qǐng)指正:(源碼在文章末尾處) 五.maven項(xiàng)目debug 第一步:首先創(chuàng)建一個(gè)maven項(xiàng)目......

        黑馬程序員android開(kāi)發(fā)筆記(一)

        01、什么是3G 02、android系統(tǒng)簡(jiǎn)介 03、android背景介紹 04、android的framewor簡(jiǎn)介 05、兩種虛擬機(jī)的比較 06、sdk的下載以及簡(jiǎn)介 07、創(chuàng)建android模擬器 08、ddms簡(jiǎn)介 09......

        黑馬程序員視頻總結(jié)

        面向?qū)ο螅好嫦驅(qū)ο笫窍鄬?duì)于面向過(guò)程而言的。面向過(guò)程強(qiáng)調(diào)的是功能,面向?qū)ο髮⒐δ芊庋b進(jìn)對(duì)象,強(qiáng)調(diào)的是具有功能的對(duì)象。 類(lèi)是對(duì)現(xiàn)實(shí)生活的描述。對(duì)象是一類(lèi)事物實(shí)實(shí)在在存在的......

        java程序員就業(yè)前景(熱門(mén)7篇)

        寫(xiě)寫(xiě)幫會(huì)員為你精心整理了7篇《java程序員就業(yè)前景》的范文,但愿對(duì)你的工作學(xué)習(xí)帶來(lái)幫助,希望你能喜歡!篇一:JAVA程序員就業(yè)前景不知道大家對(duì)Java就業(yè)前景了解多少。隨著信息化......