欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

深入淺析Java中的數(shù)組

深入淺析Java中的數(shù)組?針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

創(chuàng)新互聯(lián)是由多位在大型網(wǎng)絡(luò)公司、廣告設(shè)計(jì)公司的優(yōu)秀設(shè)計(jì)人員和策劃人員組成的一個(gè)具有豐富經(jīng)驗(yàn)的團(tuán)隊(duì),其中包括網(wǎng)站策劃、網(wǎng)頁(yè)美工、網(wǎng)站程序員、網(wǎng)頁(yè)設(shè)計(jì)師、平面廣告設(shè)計(jì)師、網(wǎng)絡(luò)營(yíng)銷(xiāo)人員及形象策劃。承接:成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、網(wǎng)站改版、網(wǎng)頁(yè)設(shè)計(jì)制作、網(wǎng)站建設(shè)與維護(hù)、網(wǎng)絡(luò)推廣、數(shù)據(jù)庫(kù)開(kāi)發(fā),以高性?xún)r(jià)比制作企業(yè)網(wǎng)站、行業(yè)門(mén)戶(hù)平臺(tái)等全方位的服務(wù)。

數(shù)組的用處是什么呢?——當(dāng)你需要將30個(gè)數(shù)進(jìn)行大小排列的時(shí)候,用數(shù)組這樣的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)是個(gè)很好的選擇,當(dāng)你是一個(gè)班的班主任的時(shí)候,每次要記錄那些學(xué)生的缺勤次數(shù)的時(shí)候,數(shù)組也是很有用。數(shù)組可以進(jìn)行插入,刪除,查找等。

1)創(chuàng)建和內(nèi)存分配

Java中有兩種數(shù)據(jù)類(lèi)型,基本類(lèi)型和對(duì)象類(lèi)型,也有人稱(chēng)為引用類(lèi)型,Java中把數(shù)組當(dāng)成對(duì)象,創(chuàng)建數(shù)組時(shí)使用new操作符。

 int array[] = new int[10]; 

既然是對(duì)象,那么array便是數(shù)組的一個(gè)引用,根據(jù)Java編程思想(一) —— 一切都是對(duì)象 的內(nèi)存分配,array會(huì)在棧中開(kāi)辟空間,并且空間存儲(chǔ)著保存數(shù)組存儲(chǔ)的地址,真正保存對(duì)象的地方是對(duì),new操作在堆中開(kāi)辟了所需的空間,然后array指向頭地址。

初始化:

public class UseArray { 
   public static void main(String[] args) { 
     int array[] = new int[10]; 
     System.out.println(array[2]); 
     UseArray a[] = new UseArray[12]; 
     System.out.println(a[1]); 
     int array2[] ={1,2,3,4,5,5,6}; 
   } 
 } 

new后的數(shù)組里面的值被默認(rèn)初始化為0,而對(duì)象的初始化是空的,null,當(dāng)然還可以通過(guò){}的方式初始化。

2)數(shù)組封裝后的使用

public class UseArray { 
   private int[] array; 
   private int number = 0; 
   public UseArray(int max){ 
     array = new int[max]; 
   } 
   public void insert(int value){ 
     array[number] = value; 
     number++; 
   } 
   public int find(int value){ 
     for (int i= 0; i < number; i++) { 
       if(array[i]==value) 
         return i; 
     } 
     return number; 
   } 
   public boolean delete(int value){ 
     int index = find(value); 
     if(index != number){ 
       for (int i = index; i < number-1; i++) { 
         array[i] = array[i+1]; 
       } 
       number--; 
       return true; 
     } 
     return false; 
   } 
   public void display(){ 
     for (int i = 0; i < number; i++) { 
       System.out.printf(array[i]+" "); 
     } 
   } 
   public static void main(String[] args) { 
     UseArray ua = new UseArray(5); 
     ua.insert(1); 
     ua.insert(2); 
     ua.insert(6); 
     ua.insert(7); 
     ua.insert(3);       
     ua.display(); 
     if(ua.find(5) != ua.number){ 
       System.out.println("find,the number index is "+ua.find(5)); 
     }else{ 
       System.out.println("not found!"); 
     } 
     if(ua.delete(5)!=true){ 
       System.out.println("can not delete!"); 
     } 
    ua.display(); 
   } 
 } 

將整個(gè)數(shù)組封裝,用number代替數(shù)組的個(gè)數(shù),插入數(shù)據(jù)的時(shí)候也不必理會(huì)往哪個(gè)下標(biāo)插,當(dāng)然,也可以自定義一個(gè)具體下標(biāo)的方法。

方法比較簡(jiǎn)單就不介紹了,但是存在的一個(gè)缺點(diǎn)在delete那里,其實(shí)只是從刪除元素開(kāi)始的左移而已,所以,雖然number減少了,但是最后一個(gè)元素并沒(méi)有刪除掉,只是display輸出展示的時(shí)候隱藏了而已,但是,下次插入元素的時(shí)候新元素便會(huì)取代掉最后一個(gè)元素的位置。

3)查找優(yōu)化——二分查找

 public int find(int value){ 
     int start = 0; 
     int end = number-1; 
     while(end>=start){ 
       int index =(end + start)/2;  
       if(array[index]==value){ 
         return index; 
       }else if(array[index] >value){ 
         end = index-1; 
       }else {  
         start = index+1; 
       } 
     } 
     return number; 
   } 

二分查找前提是數(shù)組已經(jīng)有序。剛開(kāi)始index寫(xiě)成end和start相減,造成死循環(huán)。其實(shí)要的是相加。1,2,3,6,7。index=2,value=7,3小于7,start=3,那么index要的是3和4間的中間數(shù),所以是相加之后除以2,6小于7,start=4,find到7。

4)大O表示法

設(shè)N為數(shù)據(jù)總數(shù),加入插入一個(gè)數(shù)據(jù)時(shí)間為K。那么線性查找總時(shí)間T=K*N/2,因?yàn)椴檎业脑挻蟾艦楸容^數(shù)目的一半。

二分查找的話T=k*log2(N)。大O表示法,O可以看成是order of,大約是的意思,k/2也是常數(shù),所以可以看成是O(N)。

數(shù)組的缺點(diǎn)呢,就是大小固定,查找慢,如果你要經(jīng)常查找百萬(wàn)級(jí)別的數(shù)據(jù),還會(huì)用數(shù)組嗎?不會(huì)的,所以數(shù)據(jù)結(jié)構(gòu)的選用要結(jié)合具體的實(shí)際情況,達(dá)到最大的效率值。

關(guān)于深入淺析Java中的數(shù)組問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

網(wǎng)站標(biāo)題:深入淺析Java中的數(shù)組
本文來(lái)源:http://chinadenli.net/article2/ggpcoc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管App開(kāi)發(fā)外貿(mào)網(wǎng)站建設(shè)定制網(wǎng)站響應(yīng)式網(wǎng)站面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管