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