java課件1、數(shù)組定義_第1頁
java課件1、數(shù)組定義_第2頁
java課件1、數(shù)組定義_第3頁
java課件1、數(shù)組定義_第4頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

數(shù)1、數(shù)組的定2、數(shù)組的內(nèi)存分配及特3、數(shù)組操作常見問4、數(shù)組常見操可以自動(dòng)給數(shù)組中的元素從0開始 可以自動(dòng)給數(shù)組中的元素從0開始 格式1:元素類型new元素類型[元素個(gè)數(shù)或數(shù)組長度];示例:int[]arr=newint[5];元素類型new元素類型[]{元素,元素,……};int[]arr=newint[]{3,5,1,7};int[]arr=在編寫程序中,如果需要大量的數(shù)據(jù),例如如果需要100個(gè)數(shù),那么就需要定100個(gè)變量,顯然重復(fù)寫100次代碼,是沒有太大意義的。如何解決這個(gè)問題,Java語提供了數(shù)組(array)的數(shù)據(jù)結(jié)構(gòu),是一個(gè)容器可以相同數(shù)據(jù)類型的元素,可以將個(gè)數(shù)到數(shù)組中1數(shù)組的概裝一種元素,也就是數(shù)組一旦定義,那么里邊的數(shù)據(jù)類型也就確定了。2數(shù)組的好存數(shù)據(jù)和不存數(shù)據(jù)有什么區(qū)別嗎?數(shù)組的最大好處就是能都給進(jìn)來的元素自動(dòng)進(jìn)行.注意是從0開始。方便操作這些數(shù)據(jù)。例如學(xué)生的,使用學(xué)號(hào)就可以找到對應(yīng)的學(xué)生3數(shù)組的格元素類型new元素類型[元素個(gè)數(shù)或數(shù)組長度];示例:int[]arr=newint[5];需求:想定義一個(gè)可以3個(gè)整數(shù)的容器1數(shù)組變?yōu)榱耸褂脭?shù)組必須在程序中數(shù)組,并指定數(shù)組的元素類=左半部分個(gè)特殊的符號(hào)[]中括號(hào)來表示想要使用數(shù)組是需要給數(shù)組起一個(gè)名字的,那么在這里x.接著跟上等號(hào)。int[]注意:intx[]也是一種創(chuàng)建數(shù)組的格式。使用int[]x的形式數(shù)組2創(chuàng)建數(shù)=右半部分要使用一個(gè)新的關(guān)鍵字.叫做new。new用來在內(nèi)存中產(chǎn)生一個(gè)容器實(shí)體,數(shù)據(jù)要是需要有空間的,很多數(shù)據(jù)的空間用new操作符來開辟,newint[3];這個(gè)3是元素的個(gè)數(shù)。右邊這部分就是在內(nèi)存中定義了一個(gè)真實(shí)存在的數(shù)組,能3個(gè)元素。newint[3]newint[3]創(chuàng)建了一個(gè)數(shù)組,然后把這個(gè)數(shù)組的賦值給數(shù)組變量x。int[]x=newxxintint代表的是x是數(shù)組類型的。數(shù)組是一種單獨(dú)的數(shù)據(jù)類型數(shù)據(jù)類型分為2大派分為基本數(shù)據(jù)類型和數(shù)據(jù)類型。第二大派是數(shù)據(jù)類型。那么大家現(xiàn)在已經(jīng)接觸到了數(shù)據(jù)類型三種當(dāng)中的一種。就是數(shù)組類型[]中括號(hào)就代表數(shù)組。4、int[]arrnewint[5];這個(gè)程序在內(nèi)存中是什么樣?這就涉及到了java虛擬機(jī)在執(zhí)行程序時(shí)所開辟的空間,那么javajava的內(nèi)存結(jié)構(gòu)。數(shù)組的元素類型new元素類型[元素個(gè)數(shù)或數(shù)組長度];示例:int[]arr=newint[5];intarr[]=new元素類型new元素類型[]{元素,元素,……};int[]arr=newint[]{3,5,1,7};int[]arr=length屬性獲取數(shù)組的大小。數(shù)組初int[]int[]x=newx[0]=x[1]=另一種定義:該形式可以直接明確數(shù)組的長度,以及數(shù)組中元素的內(nèi)intint[]x={1,2,3intint[]x=newint[]arr={1,2,3,4,5int[]arr2=newint[]{1,2,3,4,5int[]arr3=newint[3];int[]int[] int[]int[]數(shù)組遍publicpublicstaticvoidmain(String[]args)int[]x={1,2,3for(inti=0;i<3;i++){}}數(shù)組中有一個(gè)屬性可以獲取到數(shù)組中元素的個(gè)數(shù),也就是數(shù)組的長度數(shù)組名publicpublicstaticvoidmain(String[]args)int[]x={1,2,3for(inti=0;i<x.length;i++)}}數(shù)組的常見異publicstaticvoidmain(String[]args)int[]x={1,2,3publicstaticvoidmain(String[]args)int[]x={1,2,3}publicstaticpublicstaticvoidmain(String[]args)int[]x={1,2,3x=null;//}數(shù)組什么時(shí)候使用數(shù)組:當(dāng)元素較多時(shí)為了方便操作這些數(shù)組,會(huì)先進(jìn)行來臨時(shí),所使用的特點(diǎn)數(shù)組的常見操1:定義一個(gè)遍歷數(shù)組的函2:定義一個(gè)求數(shù)組和的功能函3:定義一個(gè)獲取數(shù)組最大值的功能函4:定義一個(gè)獲取數(shù)組最大值角標(biāo)的功能函5:定義一個(gè)返回指定數(shù)在指定數(shù)組中包含的角標(biāo)的功能函可以操作{10,8,7,2,5};1:冒2:選7:定義一個(gè)可以將整數(shù)數(shù)組進(jìn)行反序的功能函數(shù)8:二分查找(1、獲取最值(最大值,最小值2、排序(選擇排序,冒泡排序3、折半查找(二分查找獲取最獲取最大值獲取最小值publicstaticintgetMax(int[]arr)intmax=for(intx=0;xpublicstaticintgetMax(int[]arr)intmax=for(intx=0;x<arr.length;x++)if(max<arr[x]){max=arr[x];}}return}publicstaticvoidmain(String[]args)int[]x=newint[]{2,5,6,20,100};intmax=getMax(x);}publicstaticintgetMax(int[]arr)intmax=for(intx=0;x<arr.length;x++)publicstaticintgetMax(int[]arr)intmax=for(intx=0;x<arr.length;x++)if(max<arr[x]){max=arr[x];}}return}0,publicpublicstaticintgetMax(int[]arr)intmax=for(intx=0;x<arr.length;x++)if(arr[max]<arr[x]){max=x;}}}return}數(shù)組的排想要對一個(gè)數(shù)組排序例如int[]arr={4,5,2,1,7},按照從小到大的順序(升序)排列1、冒泡排序(bubble冒泡排序,每次兩個(gè)相鄰的值進(jìn)行比較,內(nèi)層循環(huán)結(jié)束,最后出現(xiàn)最大2、選擇排序(selection選擇排序先找到數(shù)組中最小的數(shù),然后將它放在數(shù)組的最前邊,然后在剩下的數(shù)組找到最小數(shù),將它放在第一個(gè)數(shù)的后邊,以此類推,知道該數(shù)組僅剩一個(gè)數(shù)為止。內(nèi)層循環(huán)arr.length-1避免角標(biāo)越界arr.length-x減少參與比較的數(shù),因?yàn)檫@些數(shù),已經(jīng)是最大值,排在最后,publicstaticvoidbubbleSort(int[]for(intfor(inty=0;y<arr.length-1-inttemp=0;}}}}0角標(biāo)位出現(xiàn)最小值。只要外層循環(huán)的值比內(nèi)層循環(huán)值大,就互換publicstaticvoidselectSort(int[]for(intx=0;x<arr.length-for(intinttemp=arr[y];}}}}數(shù)組折半查找(二分查找minmaxmin0,max是數(shù)組.length-1mid記錄數(shù)組的中間元素的角標(biāo)。mid=(min+max)/2;whilemin<=max即可。publicpublicstaticintgetIndex(int[]arr,intkey)for(intx=0;x<arr.length;x++)if(arr[x]==key)return}}return-}通過定義變量,記錄著頭角標(biāo)min,尾角標(biāo)max,和中間角標(biāo)初始化的變量為min0maxarr.length1mid(maxmin根據(jù)想要查找的key進(jìn)行判斷,如果該數(shù)大于arr[midd那么意味著先要查找的數(shù)在midd角標(biāo)的右邊,需要重新計(jì)算頭角標(biāo),從midd+1開始。尾角標(biāo)不變。]這樣循環(huán)。通過ifelseif語句,如果ifelseif都不滿足,就是既不大于,又不小于,那么就是等于。說明查找的數(shù)正對應(yīng)midd。直接return就可以了。publicpublicstaticinthalfSearch(int[]arr,intkey)intmax,min,mid;min=0;max=arr.length-while(min<=max)mid=(max+min)/if(key>arr[mid])min=mid+1;elseif(key<arr[mid])max=mid-1;return}return-}內(nèi)存結(jié)Java程序在運(yùn)行時(shí),需要在內(nèi)存中的分配空間。為了提高運(yùn)算效率,有對用于局部變量,當(dāng)數(shù)據(jù)使用完,所占空間會(huì)自動(dòng)數(shù)組和對象,通過new建立的實(shí)例都存放在堆內(nèi)存中實(shí)體不在被使用,會(huì)在不確定的時(shí)間內(nèi)被回收器回java啟動(dòng)時(shí)一共在內(nèi)存中開辟了5塊空間,來進(jìn)行自己數(shù)據(jù)的如方法區(qū),本地方法區(qū),寄存器,同時(shí)還有兩個(gè)區(qū)域棧內(nèi)存和堆內(nèi)存。現(xiàn)在了解一下棧內(nèi)存和堆內(nèi)存。棧內(nèi)存publicpublicstaticvoidmain(String[]args)intx=}publicstaticvoidshow(){intx=10;}加載類,main方法進(jìn)棧,初始化x,show方法進(jìn)棧,show出棧,main方法執(zhí)行完畢.當(dāng)在主函數(shù)中定義了intx=3主函數(shù)運(yùn)行的時(shí)候會(huì)在棧內(nèi)存中開辟一塊空間就是x=3;那么如果在main函數(shù)中調(diào)用show函數(shù),show函數(shù)也會(huì)在棧內(nèi)存中開辟空間show函數(shù)中定義了變量x=3.那么會(huì)不會(huì)重復(fù)呢?是不會(huì)重復(fù)的show函數(shù)一被執(zhí)行完,,就在棧內(nèi)存中了,所以show中的局部變量也跟著了。局部變量,定義在方法中的變量,定義在方法參數(shù)上變量,定義在for循環(huán)的變量全堆內(nèi)存intx=newint[3];就和棧內(nèi)存有很大的不同了.這行代碼在內(nèi)存中是怎樣的?首先int[]x在棧內(nèi)存中開辟了空間了,記住凡是局部變量都是在棧內(nèi)存中的xnewnew呢x如何和堆中的內(nèi)存空間建立聯(lián)系堆內(nèi)存的首地址值(堆內(nèi)存的特點(diǎn).堆內(nèi)存的每一個(gè)實(shí)體都有自己的存放位置.內(nèi)存中都是地址值.用地址來標(biāo)識(shí)數(shù)據(jù)存放的位置.那么數(shù)組在內(nèi)存中存放的時(shí)候總有一個(gè)起始位置,這個(gè)起始位置用16進(jìn)制表示(二進(jìn)制表示太長)0x0066那么這個(gè)地址就作為數(shù)組在堆內(nèi)存中存放的首地址值0x0066標(biāo)識(shí)數(shù)組在堆內(nèi)存的位置的話,0x0066x注意賦值并不是數(shù)組,而是數(shù)組的首地址.x,x.或者叫x了這個(gè)數(shù)組..這就是數(shù)據(jù)類型,數(shù)組并沒有存到x變量中去,只是把首地址值x變量.publicpublicstaticvoidmain(String[]args)int[]x=n

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論