【蓝桥杯Java_C组·从零开始卷】第四节、一维数组与二维数组
整篇文章為對java數組的完整理解以及部分排序,并有一些簡單的demo,經典的案例與藍橋杯的一些經典數組題有專門的文章梳理。
目錄
數組概述
什么是數組
數組的結構
數組的特點:
數組分類
一維數組聲明與賦值
數組的常用屬性與方法
數組的遍歷
一維數組demo案例
數組隨機賦值
?選擇排序
冒泡排序
增強for循環
二維數組聲明
二維數組練習題:
交叉數組
交叉數組遍歷
總結:
數組概述
什么是數組
單個變量能存儲信息。
如果有批量數據需要存儲,單個變量存儲時間和空間上不經濟和實用,而且過于麻煩,這時候需要用數組這一引用數據類型來存儲。
數組: 用來存儲具有相同數據類型的數據的集合,可以使用共同的名字來引用數組中存儲的數據。
特點: 數組可以存儲任何類型的數據,包括原始數據類型和引用數據類型,但是一旦指定了數組的類型之后,就只能用來存儲指定類型的數據。
數組的結構
數組是一個變量,用于將相同數據類型的數據存儲在內存空間中,數組中的所有元素必須屬于相同的數據類型。
棧(stack)與堆(heap)都是Java用來在Ram(隨機存取存儲器)中存放數據的地方。
與C++不同,Java自動管理棧和堆,程序員不能直接地設置棧或堆。
棧的優勢是,存取速度比堆要快,僅次于直接位于CPU中的寄存器。但缺點是,存在棧中的數據大小與生存期必須是確定的,缺乏靈活性。另外,棧數據在多個線程或者多個棧之間是不可以共享的,但是在棧內部多個值相等的變量是可以指向一個地址的,堆的優勢是可以動態地分配內存大小,生存期也不必事先告訴編譯器,Java的垃圾收集器會自動收走這些不再使用的數據。但缺點是,由于要在運行時動態分配內存,存取速度較慢。
數組為了在內存中能夠存取多個數據更加方便,在設計數組時,數組的結構和基本要素都與生活中的電子儲物柜非常類似。
數組的特點:
數組分類
在Java語言中,存在多種形式的數組。
?
一維數組聲明與賦值
?
?
?
int [] array;//整數數組 int array[]= new int[10]; int[] array= new int[10];數組的常用屬性與方法
int[] array= new int[10]; //數組的長度 array.length; //自然排序 Arrays.sort(array)數組的遍歷
int [] a=new int[10]; for (int i = 0; i < a.length; i++) {a[i]=i+1; } for (int i = 0; i < a.length; i++) {System.out.print(a[i]+","); }一維數組demo案例
?? ? 問題描述:輸入本部門5位員工的薪資,并根據用戶輸入的序號為指定員工進行提薪。若用戶輸入序號出現越界,則提示錯誤。要求:薪資的漲幅不能超過原薪資的20%,若漲幅超過20%,則按照原薪資的20%進行提薪。
數組隨機賦值
package Action;import java.util.Random;public class demos {public static void main(String[] args) {// 聲明隨機數Random ra = new Random();int[] arrays = new int[10];// 賦值for (int i = 0; i < arrays.length; i++) {arrays[i] = ra.nextInt(50);}// 遍歷for (int i = 0; i < arrays.length; i++) {System.out.print(arrays[i] + ",");}} }算法中經常會用到某個班級、某個公司、某個集體中隨機選某些人,或者棋牌類游戲進行棋牌的分發,彩票的出獎,紅包隨機分發匹配人員等操作。 所以,我們需要使用一定的算法進行獲取一定數量的不重復的隨機數數組。?
選擇排序
package Action;public class demos {public static void main(String[] args) {int count = 0;int[] arr = { 9, 12, 31, 123, 54, 3, 24, 324, 2345, 342 };for (int i = 0; i < arr.length; i++) {// 前者循環次數for (int j = 0; j < arr.length; j++) {// 后者循環次數if (arr[i] > arr[j]) {// 如果i>j就是ture,【1】>【2】int change = arr[i];// 賦值給change,告訴change,i多大arr[i] = arr[j];// arr[j]賦值給arr[i],換位置arr[j] = change;// change賦值給arr[j],進行下一輪比較}count++;}}for (int j2 = 0; j2 < arr.length; j2++) {System.out.print(arr[j2] + ",");}System.out.println("\n循環次數:" + count);// 100次循環} }冒泡排序
package Action;public class demos {public static void main(String[] args) {int count = 0;int[] arr = { 9, 12, 31, 123, 54, 3, 24, 324, 2345, 342 };for (int i = 0; i < arr.length - 1; i++) {for (int j = 0; j < arr.length - 1 - i; j++) {// 循環次數遞減if (arr[j] < arr[j + 1]) {// 從大到小排列int change = arr[j];arr[j] = arr[j + 1];arr[j + 1] = change;// 值交換}count++;}}for (int j2 = 0; j2 < arr.length; j2++) {System.out.print(arr[j2] + ",");}System.out.println("\n循環次數:" + count);// 45次循環} }增強for循環
int nums[] = {1,2,3,4,5,6}; for(int num : nums) {System.out.println(num); }二維數組聲明
二維數組的創建同樣有兩種方式
方式一:
使用new 類型[][]數組名= new 類型[行數][列數];
String [][]str = new String[5][5];方式二:
聲明數組并且賦初始值
int [][] array = {{23,45,45},{12,11,10},{23,12,56}};二維數組練習題:
計算二維整數數組兩條對角線的值的總和。?
int[][] x1 = {{ 1, 2, 3, 4, 5, 6, 7, 8, 9 }, { 1, 2, 3, 4, 5, 6, 7, 8, 9 },{ 1, 2, 3, 4, 5, 6, 7, 8, 9 },{ 1, 2, 3, 4, 5, 6, 7, 8, 9 },{ 1, 2, 3, 4, 5, 6, 7, 8, 9 },{ 1, 2, 3, 4, 5, 6, 7, 8, 9 },{ 1, 2, 3, 4, 5, 6, 7, 8, 9 },{ 1, 2, 3, 4, 5, 6, 7, 8, 9 },{ 1, 2, 3, 4, 5, 6, 7, 8, 9 },};交叉數組
int[][] arrays = {{ 1, 2, 3, 4, 5, 6, 7, 8, 9 }, { 1, 2, 3, 4, 5, 6},{ 1, 2, 3, 4, 5, 6, 7 },{ 1, 2, 3, 4, 5, 6},{ 1, 2, 3, 4 },{ 1, 2, 3, 4, 5 },{ 1, 2},{ 1, 2, 3, 4, 5, 6, 7, 8 },{ 1 },};交叉數組遍歷
//交叉數組遍歷 for (int i = 0; i < arrays.length; i++) {for (int j = 0; j < arrays[i].length; j++) {System.out.print(arrays[i][j]+",");}System.out.println();}總結:
數組:一組數據
數組能存儲所有數據類型的數據
同一個數組的所有數據必須是同一類型
?數組的長度固定,不能改變
數組有一個屬性:length
數組對象.length;
數組的長度
分類:一維數組和多維數組
數組的使用
第一步:聲明數組變量
數據類型 [] 數組變量名;如:int [] a; ??
第二步:創建數組對象 ?? ??? ?
new 數據類型[所要創建的數組的長度]; ?? ?
如:new int[5]; ?? ?
第三步:給數組元素賦值 ?? ??? ?
數組變量名[下標]=1; ?? ?
如:int[] a=new int[5]; ?? ??? ?a[0]=1; ?? ?
第四步:訪問數組的元素 ?? ??? ?
int max=a[0];?? ?//數組元素的使用,作為數據,給其他變量賦值
System.out.println(a[0]);//把數組元素保存的數據打印輸出
總結
以上是生活随笔為你收集整理的【蓝桥杯Java_C组·从零开始卷】第四节、一维数组与二维数组的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【蓝桥杯Java_C组·从零开始卷】第三
- 下一篇: Spring常见面试题(13个面试题,回