小猿圈java之數(shù)組

基本數(shù)據(jù)結(jié)構中,數(shù)組是很重要的,這篇小猿圈加加對數(shù)組詳解一席,具體使用,在學習過程中有困惑的朋友,可以看一下加加的這篇文章,看到就是賺到,讓我們一起看看吧。

一、數(shù)組的基本使用

public class Array01 {

? ? /**

? ? * 數(shù)組:一組相同數(shù)據(jù)類型的集合!? 在內(nèi)存中開辟一連串的空間!

? ? *? 和String一樣都是? 引用數(shù)據(jù)類型!?

? ? *? 數(shù)據(jù)類型 [] 數(shù)組名稱;?

? ? *? 數(shù)組的下標=數(shù)組的長度-1

? ? */

? ? public static void main(String[] args) {

? ? ? ? // 01.聲明數(shù)組 創(chuàng)建了一個火車廂

? ? ? ? int[] nums;

? ? ? ? // 02.分配空間 給火車廂創(chuàng)建座位

? ? ? ? nums = new int[5];

? ? ? ? // 03.賦值 旅客入座

? ? ? ? nums[0] = 50;

? ? ? ? // 04.使用 nums.length(獲取數(shù)組的長度)

? ? ? ? for (int i = 0; i < nums.length; i++) {

? ? ? ? ? ? System.out.println("數(shù)組nums的第" + (i + 1) + "個位置的數(shù)據(jù)是:" + nums[i]);

? ? ? ? }

? ? }


? ? // 聲明數(shù)組的同時給數(shù)組賦值

? ? @Test

? ? public void test01() {

? ? ? ? /**

? ? ? ? * 給你說 創(chuàng)建車廂的同時,告訴你里面有多少個座位

? ? ? ? *

? ? ? ? * int? [] nums;

? ? ? ? * nums={ 1, 2, 3, 4, 5 };? 這種寫法是錯誤的!

? ? ? ? */

? ? ? ? int[] nums = { 1, 2, 3, 4, 5 };

? ? ? ? // 找到下標為3的數(shù)據(jù)

? ? ? ? System.out.println(nums[3]);

? ? }

? ? @Test

? ? public void test02() {

? ? ? ? // int[] nums = new int[5]; 可以 常用的方式

? ? ? ? int[] nums = new int[] { 1, 2, 3, 4, 5 };

? ? ? ? // 找到下標為3的數(shù)據(jù)

? ? ? ? System.out.println(nums[3]);

? ? }

? ? /**

? ? * 計算5位學生的平均分

? ? */

? ? @Test

? ? public void test03() {

? ? ? ? // 01.創(chuàng)建一個長度為5的double類型的數(shù)組 保存學生成績

? ? ? ? double[] scores = new double[5];

? ? ? ? // 02.循環(huán)給學生成績賦值

? ? ? ? Scanner scanner = new Scanner(System.in);

? ? ? ? double sum = 0; // 保存總成績

? ? ? ? for (int i = 0; i < scores.length; i++) {

? ? ? ? ? ? System.out.println("請輸入第" + (i + 1) + "位同學的成績");

? ? ? ? ? ? scores[i] = scanner.nextDouble();

? ? ? ? ? ? // 每個學生成績需要加到sum中

? ? ? ? ? ? sum += scores[i];

? ? ? ? }

? ? ? ? System.out.println("學生的總成績是:" + sum);

? ? ? ? System.out.println("學生的平均分是:" + (sum / scores.length));

? ? }

? ? /**

? ? * 有一個數(shù)列:8,4,2,1,23,344,12

? ? 循環(huán)輸出數(shù)列的值

? ? 求數(shù)列中所有數(shù)值的和

? ? 猜數(shù)游戲:從鍵盤中任意輸入一個數(shù)據(jù),判斷數(shù)列中是否包含此數(shù)

? ? */

? ? @Test

? ? public void test04() {

? ? ? ? // 01.創(chuàng)建int類型數(shù)組

? ? ? ? int nums[] = { 8, 4, 2, 1, 23, 344, 12 };

? ? ? ? // 定義變量保存總和

? ? ? ? int sum = 0;

? ? ? ? // 02.循環(huán)輸出數(shù)列的值

? ? ? ? for (int i = 0; i < nums.length; i++) {

? ? ? ? ? ? System.out.print(nums[i] + ",");

? ? ? ? ? ? sum += nums[i];

? ? ? ? }

? ? ? ? System.out.println("\n數(shù)組中數(shù)值的總和:" + sum);

? ? ? ? // 猜數(shù)游戲:從鍵盤中任意輸入一個數(shù)據(jù),判斷數(shù)列中是否包含此數(shù)

? ? ? ? Scanner scanner = new Scanner(System.in);

? ? ? ? System.out.println("請輸入一個數(shù)字:");

? ? ? ? int num = scanner.nextInt();

? ? ? ? // 定義標記 來記錄是否中獎

? ? ? ? boolean flag = false;

? ? ? ? for (int i = 0; i < nums.length; i++) {

? ? ? ? ? ? if (num == nums[i]) {

? ? ? ? ? ? ? ? flag = true;

? ? ? ? ? ? ? ? break;

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? if (flag) { // 判斷標記

? ? ? ? ? ? System.out.println("恭喜您!中大獎!");

? ? ? ? } else {

? ? ? ? ? ? System.out.println("沒有找到......");

? ? ? ? }

? ? }

? ? /**

? ? * 以表格的形式輸出5筆購物金額及總金額

? ? */

? ? @Test

? ? public void test05() {

? ? ? ? double[] pays = new double[5];

? ? ? ? double sum = 0; // 總金額

? ? ? ? Scanner scanner = new Scanner(System.in);

? ? ? ? System.out.println("請輸入本月的消費記錄:");

? ? ? ? for (int i = 0; i < pays.length; i++) {

? ? ? ? ? ? System.out.println("請輸入" + (i + 1) + "次的消費金額:");

? ? ? ? ? ? pays[i] = scanner.nextDouble(); // 給數(shù)組中每一個元素賦值

? ? ? ? ? ? // 求和

? ? ? ? ? ? sum += pays[i];

? ? ? ? }

? ? ? ? // 輸出消費詳情 遍歷(從集合中取得數(shù)據(jù))

? ? ? ? System.out.println("序號\t\t金額");

? ? ? ? for (int i = 0; i < pays.length; i++) {

? ? ? ? ? ? System.out.println((i + 1) + "\t\t" + pays[i]);

? ? ? ? }

? ? ? ? System.out.println("總金額:" + sum);

? ? }

? ? /**

? ? * Arrays? :數(shù)組的操作類

? ? */

? ? @Test

? ? public void test06() {

? ? ? ? double[] pays = new double[5];

? ? ? ? Scanner scanner = new Scanner(System.in);

? ? ? ? System.out.println("請輸入本月的消費記錄:");

? ? ? ? for (int i = 0; i < pays.length; i++) {

? ? ? ? ? ? System.out.println("請輸入" + (i + 1) + "次的消費金額:");

? ? ? ? ? ? pays[i] = scanner.nextDouble(); // 給數(shù)組中每一個元素賦值

? ? ? ? }

? ? ? ? // 沒有排序的遍歷

? ? ? ? for (int i = 0; i < pays.length; i++) {

? ? ? ? ? ? System.out.println(pays[i]);

? ? ? ? }

? ? ? ? System.out.println("*************升序之后***************");

? ? ? ? Arrays.sort(pays);// 升序排列

? ? ? ? for (int i = 0; i < pays.length; i++) {

? ? ? ? ? ? System.out.println(pays[i]);

? ? ? ? }

? ? }

}

二、操作數(shù)組的工具類

/**

* 操作數(shù)組的工具類!

*/

public class Arrays02 {

? ? // equals(arr1, arr2) :比較兩個數(shù)組的內(nèi)容和長度 是否一致

? ? @Test

? ? public void testEquals() {

? ? ? ? int[] nums1 = { 10, 20, 30, 50 };

? ? ? ? int[] nums2 = nums1;

? ? ? ? int[] nums3 = { 10, 20, 30 };

? ? ? ? System.out.println("nums1與nums2比較:" + Arrays.equals(nums1, nums2));

? ? ? ? System.out.println("nums1==nums2比較:" + (nums1 == nums2));

? ? }

? ? // sort(arr):對數(shù)組中的元素進行升序的排列

? ? @Test

? ? public void testSort() {

? ? ? ? int[] nums = { 10, 50, 30, 20 };

? ? ? ? Arrays.sort(nums);

? ? ? ? for (int i = 0; i < nums.length; i++) {

? ? ? ? ? ? System.out.println(nums[i]);

? ? ? ? }

? ? }

? ? /**

? ? *? toString :把一個數(shù)組變成字符串

? ? *? [10, 50, 30, 20]? 集合toString的結(jié)果!

? ? */

? ? @Test

? ? public void testToString() {

? ? ? ? int[] nums = { 10, 50, 30, 20 };

? ? ? ? System.out.println(Arrays.toString(nums));

? ? }

? ? /**

? ? * fill(arr,val):將arr數(shù)組中的所有元素都賦值成了val

? ? */

? ? @Test

? ? public void testFill() {

? ? ? ? int[] nums = { 10, 50, 30, 20 };

? ? ? ? System.out.println(Arrays.toString(nums));

? ? ? ? Arrays.fill(nums, 100);

? ? ? ? System.out.println(Arrays.toString(nums));

? ? }

? ? /**

? ? * copyOf(arr,length):將數(shù)組arr復制成一個長度為length的新數(shù)組!

? ? */

? ? @Test

? ? public void testCopyOf() {

? ? ? ? int[] nums = { 10, 50, 30, 20 };

? ? ? ? int[] nums1 = Arrays.copyOf(nums, 3);

? ? ? ? System.out.println(Arrays.toString(nums1));

? ? }

? ? /**

? ? * binarySearch(arr,val):查詢val在arr數(shù)組中的下標!

? ? * 必須先升序排列!? Arrays.sort(arr)!!!!

? ? */

? ? @Test

? ? public void testBinarySearch() {

? ? ? ? int[] nums = { 10, 50, 30, 20 };

? ? ? ? Arrays.sort(nums); // 10 20 30 50

? ? ? ? System.out.println(Arrays.binarySearch(nums, 50));

? ? }

}

三、多重數(shù)組

public class DoubleArray04 {

? ? public static void main(String[] args) {

? ? ? ? int[] clazz = new int[3]; // 保存班級

? ? ? ? int[] students = new int[5]; // 保存學生

? ? }

? ? @Test

? ? public void test01() { // 聲明的同時開辟空間

? ? ? ? int[][] nums = new int[3][5]; // 3個班級各5名學生

? ? }

? ? @Test

? ? public void test02() { // 先聲明 再 開辟空間

? ? ? ? int[][] nums;

? ? ? ? nums = new int[3][5]; // 3個班級各5名學生

? ? }

? ? @Test

? ? public void test03() { // 聲明 開辟空間的同時賦值

? ? ? ? int[][] nums = { { 1, 2, 3, 4, 5 }, { 1, 2, 3, 4, 5 },

? ? ? ? ? ? ? ? { 1, 2, 3, 4, 5 } };

? ? ? ? System.out.println(nums.length);// 3個班級各5名學生

? ? }

? ? @Test

? ? public void test04() {

? ? ? ? int[][] nums = new int[3][5]; // 3個班級各5名學生

? ? ? ? // 第二個班級的第三個學生

? ? ? ? nums[1][2] = 50;

? ? }

? ? @Test

? ? public void test05() {

? ? ? ? int[][] nums = { { 1, 2, 3 }, { 10, 20, 30 }, { 100, 200, 300 } };

? ? ? ? /**

? ? ? ? * nums.length? 車廂數(shù)

? ? ? ? * nums[i].length 車廂中的座位數(shù)

? ? ? ? * 雙重循環(huán):

? ? ? ? *? 外層循環(huán)執(zhí)行一次,內(nèi)存循環(huán)執(zhí)行一遍!

? ? ? ? */

? ? ? ? for (int i = 0; i < nums.length; i++) {

? ? ? ? ? ? System.out.println("進入了第" + (i + 1) + "個車廂**********");

? ? ? ? ? ? if (i == 2) {

? ? ? ? ? ? ? ? break; // 跳出當前循環(huán)體

? ? ? ? ? ? }

? ? ? ? ? ? for (int j = 0; j < nums[i].length; j++) {

? ? ? ? ? ? ? ? if (j == 2) {

? ? ? ? ? ? ? ? ? ? break; // 跳出當前循環(huán)體

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? System.out.println(nums[i][j]);

? ? ? ? ? ? }

? ? ? ? }

? ? }

? ? /**

? ? * 所有的引用數(shù)據(jù)類型如果沒有實例化(開辟空間)! 不能使用!

? ? * 因為引用數(shù)據(jù)類型的默認值 是? null!

? ? */

? ? @Test

? ? public void test06() {

? ? ? ? int[][] nums = new int[5][];

? ? ? ? System.out.println(nums.length);

? ? ? ? nums[0] = new int[5]; // 開辟空間

? ? ? ? nums[1] = new int[6];

? ? ? ? nums[0][0] = 50; // 使用

? ? ? ? nums[0][1] = 60;

? ? ? ? nums[0][2] = 70;

? ? ? ? nums[0][3] = 80;

? ? ? ? System.out.println(nums[0].length);

? ? ? ? System.out.println(nums[1].length);

? ? }

}

四、二維數(shù)組

/**

? ? * 二維數(shù)組: 數(shù)組中的元素 又是一個數(shù)組!

? ? */

? ? @Test

? ? public void test06(){

? ? ? ? //01.創(chuàng)建二維數(shù)組

? ? ? ? int[][] nums=new int[3][3]; //int [][] nums2={{1,2,3},{4,5,6},{7,8,9}};? ? ? ?

? ? ? ? nums[0][0]=5;

? ? ? ? nums[0][1]=6;

? ? ? ? nums[0][2]=7;


? ? ? ? nums[1][0]=5;

? ? ? ? nums[1][1]=6;

? ? ? ? nums[1][2]=7;


? ? ? ? nums[2][0]=5;

? ? ? ? nums[2][1]=6;

? ? ? ? nums[2][2]=7;? ?

? ? }? ?


? ? @Test

? ? public void test07(){

? ? ? ? //01.創(chuàng)建二維數(shù)組

? ? ? ? int [][] nums={{1,2,3,4},{4,5,6},{7,8}};


? ? ? ? System.out.println(nums[0]);//{1,2,3}

? ? ? ? System.out.println(nums[0][1]);//2

? ? ? ? System.out.println("nums的長度:"+nums.length);

? ? ? ? System.out.println("第2個數(shù)組中下標是2的元素"+nums[1][2]);

? ? }


? ? /**

? ? * 循環(huán)打印出數(shù)組所有的元素

? ? */

? ? @Test

? ? public void test08(){

? ? ? ? //01.創(chuàng)建二維數(shù)組

? ? ? ? int [][] nums={{1,2,3,4},{4,5,6},{7,8}};

? ? ? ? for (int i = 0; i < nums.length; i++) {? //外層

? ? ? ? ? ? System.out.println("這是2維數(shù)組中的第"+(i+1)+"個數(shù)組");

? ? ? ? ? ? for (int j = 0; j < nums[i].length; j++) {//內(nèi)層

? ? ? ? ? ? ? ? System.out.println("元素的值:"+nums[i][j]);

? ? ? ? ? ? }

? ? ? ? }? ? ?

? ? }

數(shù)組的詳解具體就是上面這些,大家可以好好練習一下,針對數(shù)組一定要會變通,會寫二維數(shù)組、用數(shù)組實現(xiàn)冒泡排序等等,一定要掌握,重中之重,小編認為這篇數(shù)組講的還算詳細、清晰,希望大家看后可以好好保存,也可以去小猿圈學習通過視頻,一個免費的學習平臺。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容