/*
* 數(shù)組:? 數(shù)組是存儲同一種數(shù)據(jù)類型數(shù)據(jù)的集合容器勺远;
*
* 數(shù)組的定義格式:
* 數(shù)據(jù)類型[]? 變量名? = new 數(shù)據(jù)類型[長度];? //長度必須是int類型的數(shù)組常量首尼,需要在編譯期間就確定數(shù)組長度蝶锋。
*
* 分析數(shù)組:
* 左邊: int[] arr;? 聲明了一個int類型的數(shù)組變量陆爽,變量名為arr。
* int:? ? ? ? 表示該數(shù)組容器只能存儲int類型的數(shù)據(jù)扳缕。
* []:? ? ? ? 這是一個數(shù)組類型慌闭。
* arr:? ? ? ? 變量名
*
* 右邊: new? int[50]: 創(chuàng)建了一個長度為50的int類型數(shù)組對象。
* ? new:? ? 創(chuàng)建數(shù)組對象的關(guān)鍵字躯舔。
* ? int:? ? 表示該數(shù)組對象只能存儲int類型數(shù)據(jù)驴剔。
* ? []:? ? 表示是數(shù)組類型。
* ? 50:? ? 該數(shù)組最多能存儲50個數(shù)據(jù)粥庄,數(shù)組的容量丧失。
*
數(shù)組的長處:
* 對分配到數(shù)組對象中每一個數(shù)據(jù)都分配一個索引值,索引值的范圍是從0開始惜互,最大index是 length-1.
*
* 局部變量: 如果一個變量是在一個方法(函數(shù))的內(nèi)部聲明的布讹,那么該變量就是一個局部變量琳拭。
* 成員變量: 成員變量就是定義在方法之外,類之內(nèi)的描验。
* */
/*? 在java中白嘁, 通過new關(guān)鍵字創(chuàng)建的變量或者對象,同時在 heap中創(chuàng)建的膘流;
*
*? 其中:? arr1絮缅,arr2是局部變量,在棧中分配內(nèi)存呼股, 而且內(nèi)容是地址盟蚣,指向堆中的數(shù)組;
*
*? 數(shù)組中最常見的問題:
*? 1. NullPointerException? 空指針異常
*? 原因: 引用類型變量沒有指向任何對象卖怜,引用類型變量指向了NULL屎开,而訪問了對象的屬性活著調(diào)用了對象的方法;
*
*? 2. ArrayIndexOutOfBoundsException? 索引值越界
*? 原因: 訪問了不存在的索引值马靠;
*
*
*
* */
/* 數(shù)組的初始化:
*
*? 動態(tài)初始化:
*? 數(shù)據(jù)類型[] 變量名 = new? 數(shù)據(jù)類型[長度];? ? //先創(chuàng)建一個數(shù)組對象奄抽,以后再對數(shù)組中每個變量賦值。
*
*? ? ? 靜態(tài)初始化:
*? ? ? 數(shù)據(jù)類型[] 變量名 = {元素1甩鳄, 元素2逞度,... };
*
*? ? ? 如果程序一開始你就已經(jīng)確定了數(shù)據(jù),那么這時候建議使用靜態(tài)初始化妙啃。 如果數(shù)據(jù)一開始還不太明確档泽,這個時候就建議使用動態(tài)初始化烦粒。
**? ? ??
?*??
? ?public static int getMax( int[] arr ){int max = arr[0];for( int i=1; imax ){
max = arr[i];
}
}
return max;
}
* */
/*
*? 數(shù)組工具的類方法:
*
* 1. 數(shù)組排序? Arrays.sort( array );? //對array進行排序
*? ? ? 2. 二分查找? Arrays.binarySearch( array, searchValue ); //二分查找
*? ? ? 3. 數(shù)組轉(zhuǎn)String? Arrays.toString(array);? //數(shù)組轉(zhuǎn)String
* */
/*
*? 數(shù)組的特點:
*? 1.數(shù)組只能存儲同一種 數(shù)據(jù)類型的數(shù)據(jù)穆碎。
*? 2.數(shù)組是會給存儲到數(shù)組中的元素分配一個索引值的误褪,索引值從0開始酱塔,最大的索引值是length-1
*? 3.數(shù)組一旦初始化,長度固定
*? 4.數(shù)組中的元素與元素之間的內(nèi)存地址是連續(xù)的改鲫。
*
* */
/*
*? 二維數(shù)組:? 數(shù)組中的數(shù)組
*? 定義格式:
*? 數(shù)組類型[][] 變量名? = new 數(shù)據(jù)類型[長度1][長度2];? chan
*
*? ? ? 初始化方式:
*? ? ? 1. 動態(tài)初始化方式:
*? ? ? 數(shù)據(jù)類型[][] 變量名 = new 數(shù)據(jù)類型[長度1][長度2];
*
*? ? ? 2. 靜態(tài)初始化:
*? ? ? 數(shù)據(jù)類型[][] 變量名 = {{元素1,元素2,元素3}, {元素4筛璧,元素5卧波,元素6}, {元素7铭拧,元素8赃蛛,元素9}};
*
*? ? ? //長度1 表示 二維數(shù)組內(nèi)一維數(shù)組的長度;
*? ? ? //長度2 表示 二維數(shù)組內(nèi)每個元素中的自元素的長度搀菩;
*
*? 重點: 二維數(shù)組中的每個元素呕臂,僅僅只存了一維數(shù)組的內(nèi)存指向地址。
* */
class? Demo4{
public static void main( String[] args ){
int[] arr = {9,8,7,6,6,4,3,2,1};
sortBubble(arr);
boolean findResult = halfSearch(arr,20 );
System.out.println("findResult: "+findResult);
display(arr);
revert(arr);
display(arr);
}
public? static void sortArr( int[] arr ){
int length = arr. length;
/*? 選擇排序 *? ? 選擇數(shù)組中的一個元素肪跋, 然后跟其他元素比較歧蒋, 最終讓該元素?fù)碛袛?shù)組的最大值; *? * */for( int j=0; jarr[j] ){
int temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
}
}