(四)java中數(shù)組的使用-創(chuàng)新互聯(lián)

文章目錄
      • 十六.數(shù)組的使用
        • 數(shù)組的賦值機(jī)制
        • 一維數(shù)組的JVM內(nèi)存布局
        • 冒泡排序
        • 查找
        • 二維數(shù)組
        • 二維數(shù)組的JVM內(nèi)存布局
        • 二維數(shù)組的使用細(xì)節(jié)

創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括夏津網(wǎng)站建設(shè)、夏津網(wǎng)站制作、夏津網(wǎng)頁制作以及夏津網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,夏津網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到夏津省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!十六.數(shù)組的使用
  • 數(shù)組是多個(gè)相同類型數(shù)據(jù)的組合,實(shí)現(xiàn)對(duì)這些數(shù)據(jù)的統(tǒng)一管理。

  • 數(shù)組中的元素可以是任意數(shù)據(jù)類型,包括基本類型和引用類型,但是不能混合用

  • 數(shù)組創(chuàng)建后,如果沒有進(jìn)行扶著,有默認(rèn)值。

    byte 0,short 0,int 0,long 0,float 0 ,double 0,char \u0000,boolean false,String null。

  • 使用數(shù)組的步驟:使用數(shù)組并開辟空間,給數(shù)組的各個(gè)元素進(jìn)行復(fù)制,使用數(shù)組

  • 數(shù)組的下標(biāo)從0開始的

  • 數(shù)組的下標(biāo)必須在指定范圍內(nèi)使用,否則就會(huì)數(shù)組越界。

  • 數(shù)組屬于引用類型,數(shù)組數(shù)據(jù)的對(duì)象是object。

import java.util.Scanner;

public class array {public static void main(String[] args) {//創(chuàng)建一個(gè)char類型的26個(gè)元素的數(shù)組,分別放置'A'-'Z'.使用for循環(huán)訪問所有元素并打印出來。
        char[] chars = new char[26];
        for (int i = 0; i< chars.length; i++ ) {chars[i] = (char)('A' + i);//這里由于'A' + i是int型,需要強(qiáng)制轉(zhuǎn)換
        }
        System.out.println("chars數(shù)組如下:");
        for (int i = 0 ; i< chars.length; i++) {System.out.print(chars[i] + "  ");
        }
    }
}
public class array02 {public static void main(String[] args) {//請(qǐng)求出一個(gè)數(shù)組int[]的大值{4,-1,9,10,23},并得到相應(yīng)的下標(biāo),并求出其平均值。
        int[] arrays = {4, -1, 9, 10, 23};
        int max = arrays[0];
        int maxindex = 0;
        int sum = 4;
        double avg = 0;

        for (int i = 1; i< arrays.length; i++ ) {if (arrays[i] >max) {max = arrays[i];
                maxindex = i;
            }
            sum += arrays[i];
        }
        avg = sum / arrays.length;
        System.out.println("該數(shù)組的大值為:" + max);
        System.out.println("其對(duì)應(yīng)的下標(biāo)為:" + maxindex);
        System.out.println("其平均值為:" + avg);

    }
}
數(shù)組的賦值機(jī)制
  1. 基本數(shù)據(jù)類型賦值,這個(gè)值就是具體的數(shù)據(jù),而且是互不影響的。
  2. 數(shù)組在默認(rèn)的情況下是引用傳遞的,賦的值是地址。
int[] arr1 = {1,2,3};
int[] arr2 = arr1;
arr2[0] = 10;
//賦值方式是引用賦值,arr2的變換會(huì)影響到arr1.
System.out.println("arr1的元素為:");
for (int i = 1; i< arrays.length; i++ ) {System.out.println(arr1[i]);
}
一維數(shù)組的JVM內(nèi)存布局

? 值傳遞 / 值拷貝和引用傳遞 / 地址拷貝的區(qū)別:

? 值傳遞的時(shí)候相當(dāng)于值拷貝,將原先的數(shù)值拷貝的一份,與之前的數(shù)據(jù)互不影響。

? 數(shù)組指向的是一個(gè)地址,引用傳遞的時(shí)候指向的一個(gè)地址,在傳遞的時(shí)候只是將地址復(fù)制了一份。

?在這里插入圖片描述

int[] arr1 = {10.20.30};
int[] arr2 = new int[arr1.length];//arr2重新開辟了新的空間,與之前的地址互不影響

在這里插入圖片描述

public class array03 {public static void main(String[] args) {//數(shù)組交換
        int[] arrs = {11, 22, 33, 44, 55, 66};
        int a = 0;
        int len = arrs.length;
        for (int i = 0; i< len / 2; i++) {a = arrs[len - i - 1];
            arrs[len - i - 1] = arrs[i];
            arrs[i] = a;
        }
        System.out.println("數(shù)組倒序排列后的結(jié)果如下:");
        for (int i = 0; i< arrs.length; i++) {System.out.print(arrs[i] + "  ");
        }
    }
}
public class array04 {public static void main(String[] args) {//數(shù)組的擴(kuò)容
        int[] arr = {1, 2, 3};
        int[] arrNew = new int[arr.length + 1]; //定義一個(gè)新數(shù)組
        for (int  i = 0; i< arr.length ; i++ ) {arrNew[i] = arr[i];
        }
        arrNew[arrNew.length - 1] = 4;
        arr = arrNew; 
        System.out.println("數(shù)組擴(kuò)容后的結(jié)果如下:");
        for (int i = 0; i< arr.length; i++) {System.out.print(arr[i] + " ");
        }
    }
}
import java.util.Scanner;

public class array05 {public static void main(String[] args) {//動(dòng)態(tài)數(shù)組的擴(kuò)容,每次在最后添加一個(gè)元素
        Scanner lll = new Scanner(System.in);

        int[] arr = {1, 2, 3};
        do {int[] arrNew = new int[arr.length + 1]; //定義一個(gè)新數(shù)組
            for (int  i = 0; i< arr.length ; i++ ) {arrNew[i] = arr[i];
            }

            System.out.println("請(qǐng)輸入您要添加的元素:");
            int add1 = lll.nextInt();

            arrNew[arrNew.length - 1] = add1;
            arr = arrNew;

            System.out.println("數(shù)組擴(kuò)容后的結(jié)果如下:");
            for (int i = 0; i< arr.length; i++) {System.out.print(arr[i] + " ");
            }

            System.out.println("");
            System.out.println("您是否還要繼續(xù)添加(y/n):");
            char add2 = lll.next().charAt(0);

            if ( add2 == 'n') {break;
            } else if (add2 == 'y') {continue;
            } else {System.out.println("您輸入的語法錯(cuò)誤?。?!");
                break;
            }

        } while (true);

        System.out.println("程序結(jié)束");
    }
}
import java.util.Scanner;

public class array06 {public static void main(String[] args) {//數(shù)組的動(dòng)態(tài)縮減
        //有一個(gè)數(shù)組{1,2,3,4,5},可以將該數(shù)組進(jìn)行縮減,提示用戶能否繼續(xù)進(jìn)行縮減,每次縮減最后的元素,當(dāng)只剩下最后的一個(gè)元素,提示,不能在進(jìn)行縮減,
        Scanner lll = new Scanner(System.in);

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

        System.out.println("您最初的數(shù)組是{1,2,3,4,5}");

        do {System.out.println("您是否要繼續(xù)縮減(y/n):");

            char add2 = lll.next().charAt(0);

            if ( add2 == 'n') {break;
            } else if (add2 == 'y') {if (arr.length == 1) {System.out.println("數(shù)組長度達(dá)到最小值,不能再進(jìn)行縮減?。?!");
                    break;
                }

                int[] arrNew = new int[arr.length - 1]; //定義一個(gè)新數(shù)組

                for (int  i = 0; i< arrNew.length ; i++ ) {arrNew[i] = arr[i];
                }

                arr = arrNew;

                System.out.println("數(shù)組縮減后的結(jié)果如下:");

                for (int i = 0; i< arr.length; i++) {System.out.print(arr[i] + " ");
                }

                System.out.println("");

            } else {System.out.println("您輸入的語法錯(cuò)誤?。?!");
                break;
            }

        } while (true);

        System.out.println("程序結(jié)束");
    }
}
冒泡排序

在這里插入圖片描述

? 原理:通俗的來講就是兩個(gè)兩個(gè)重復(fù)多輪的進(jìn)行比較,每執(zhí)行一輪排序就能進(jìn)行得到一個(gè)結(jié)果數(shù)。

? 特點(diǎn):

  1. 每執(zhí)行一輪排序就可以確定一個(gè)數(shù)的位置,比如第一輪排序確定大的數(shù),第二輪排序確定第二大的數(shù)。
  2. 當(dāng)進(jìn)行比較時(shí),如果前面的數(shù)字大于后面的數(shù)字,就進(jìn)行交換。
  3. 每一輪比較的次數(shù)都在減少。有n個(gè)數(shù)據(jù),第一輪排序需要排n-1,第二輪排序需要排n-2次。以此類推。
public class bubble_order {public static void main(String[] args) {//冒泡排序(從大到小排列)
        int[] arr = {24, 69, 80, 57, 13};
        int aaa = 0;
        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]) {aaa = arr[j + 1];
                    arr[j + 1] = arr[j];
                    arr[j] = aaa;
                }
            }
        }
        System.out.println("冒泡排序后的結(jié)果為:");
        for (int k = 0; k< arr.length; k++) {System.out.print(arr[k] + " ");
        }
    }
}
public class bubble_order2 {public static void main(String[] args) {//冒泡排序(從小到大排列)
        int[] arr = {24, 69, 80, 57, 13};
        int aaa = 0;
        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]) {//這里改個(gè)符號(hào)即可從小到大進(jìn)行排列
                    aaa = arr[j + 1];
                    arr[j + 1] = arr[j];
                    arr[j] = aaa;
                }
            }
        }
        System.out.println("冒泡排序后的結(jié)果為:");
        for (int k = 0; k< arr.length; k++) {System.out.print(arr[k] + " ");
        }
    }
}
查找
import java.util.Scanner;

public class inquire {public static void main(String[] args) {//查找
        String[] names = {"狗子", "猴子", "胖子", "瘦子", "絕絕子"};
        Scanner lll = new Scanner(System.in);

        System.out.println("請(qǐng)輸入您要查詢的名字");
        String findName = lll.next();
        int tag = 0;//設(shè)置標(biāo)記

        for (int i = 0; i< names.length ; i++ ) {if (findName.equals(names[i])) {System.out.println("恭喜找到:" + findName);
                System.out.println("下標(biāo)為:" + i);

                tag = 1;
                break;
            }
        }
        if (tag == 0) {System.out.println("對(duì)不起,沒有找到名字:" + findName);
        }

    }
}
二維數(shù)組
import java.util.Scanner;

public class array07 {public static void main(String[] args) {//輸出一個(gè)二維數(shù)組
		int[][] arr = {	{1, 2, 3, 4, 5, 6},
			{1, 2, 3, 4, 5},
			{1, 2, 3, 4},
			{1, 2, 3}
		};
		System.out.println("輸出的二維數(shù)組的結(jié)果如下:");
		for (int i = 0; i< arr.length ; i++) {	for (int  j = 0; j< arr[i].length ; j++) {		System.out.print(arr[i][j] + " ");
			}
			System.out.println(" ");
		}

	}
}
import java.util.Scanner;

public class array08 {public static void main(String[] args) {//二維數(shù)組的使用,動(dòng)態(tài)數(shù)組賦值并輸出
		Scanner lll = new Scanner(System.in);

		int arr[][];//聲明二維數(shù)組
		arr = new int[2][3];//開辟數(shù)組空間,2行3列的二維數(shù)組。

		for (int i = 0; i< arr.length ; i++ ) {	System.out.println("現(xiàn)在輸入數(shù)組的第" + i + "行數(shù)據(jù)");
			for (int j = 0; j< arr[i].length ; j++ ) {		System.out.println("輸入第" + j + "列數(shù)據(jù)");
				int a = lll.nextInt();
				arr[i][j] = a;
			}
		}

		System.out.println("您輸入的數(shù)組的結(jié)果如下:");

		for (int h = 0; h< arr.length ; h++ ) {	for (int k = 0; k< arr[h].length ; k++ ) {		System.out.print(arr[h][k] + " ");
			}
			System.out.println(" ");
		}
	}
}
import java.util.Scanner;

public class array09 {public static void main(String[] args) {//二維數(shù)組的使用,輸出二維數(shù)組的第一行為1,第二行為兩個(gè)2,第三行為3個(gè)3,以此類推。
		Scanner lll = new Scanner(System.in);

		System.out.println("您要輸出幾行:");
		int i = lll.nextInt();

		int[][] arr = new int[i][];

		for (int j = 0; j< arr.length ; j++ ) {	arr[j] = new int[j + 1];//第0層有1個(gè)空間,第1層有兩個(gè)空間。

			for (int k = 0; k< arr[j].length ; k++ ) {		arr[j][k] = j + 1;//第一層的j等于0,所以要想每層都是對(duì)應(yīng)層數(shù)的話,就需要進(jìn)行加1
			}
		}

		System.out.println("您輸入的數(shù)組的結(jié)果如下:");

		for (int m = 0; m< arr.length ; m++ ) {	for (int n = 0; n< arr[m].length ; n++ ) {		System.out.print(arr[m][n] + " ");
			}
			System.out.println(" ");
		}
	}
}
import java.util.Scanner;

public class array10 {public static void main(String[] args) {//二維數(shù)組的使用,動(dòng)態(tài)數(shù)組賦值并輸出
		Scanner lll = new Scanner(System.in);

		int arr[][];//聲明二維數(shù)組
		arr = new int[3][3];//開辟數(shù)組空間,3行3列的二維數(shù)組

		for (int i = 0; i< arr.length ; i++ ) {	System.out.println("現(xiàn)在輸入數(shù)組的第" + i + "行數(shù)據(jù)");
			for (int j = 0; j< arr[i].length ; j++ ) {		System.out.println("輸入第" + j + "列數(shù)據(jù)");
				int a = lll.nextInt();
				arr[i][j] = a;
			}
		}

		int sum = 0;
		System.out.println("您輸入的數(shù)組的結(jié)果如下:");

		for (int h = 0; h< arr.length ; h++ ) {	for (int k = 0; k< arr[h].length ; k++ ) {		System.out.print(arr[h][k] + " ");
				sum += arr[h][k];
			}
			System.out.println(" ");
		}
		System.out.println("您輸入的數(shù)據(jù)總和為:" + sum);
	}
}
import java.util.Scanner;

public class YangHui {public static void main(String[] args) {//打印楊輝三角
		Scanner lll = new Scanner(System.in);

		System.out.println("您要輸出幾層楊輝三角:");

		int a = lll.nextInt();
		int[][] yanghui = new int[a][];
		for (int i = 0 ; i< yanghui.length ; i++) {	yanghui[i] = new int[i + 1]; //開辟新的空間。
			for (int j = 0 ; j< yanghui[i].length ; j++ ) {		if (j == 0 || j == yanghui[i].length - 1) {yanghui[i][j] = 1;
				} else {yanghui[i][j] = yanghui[i - 1][j - 1] + yanghui[i - 1][j];
				}
			}
		}
		System.out.println("輸出結(jié)果如下:");
		for (int k = 0; k< yanghui.length ; k++ ) {	for (int l = 0 ; l< yanghui[k].length ; l++) {		System.out.print(yanghui[k][l] + " ");
			}
			System.out.println(" ");
		}
	}
}
import java.util.Scanner;

public class array11 {public static void main(String[] args) {//已知有一個(gè)升序的數(shù)組,要求插入一個(gè)元素,該數(shù)組的順序依然是升序的,比如{10,12,45,90},添加23后,數(shù)組為{10,12,23,45,90}
		Scanner lll = new Scanner(System.in);

		System.out.println("請(qǐng)先輸入原始數(shù)組有幾個(gè)數(shù)字(輸入數(shù)字即可):");
		int a = lll.nextInt();
		int[] arr = new int[a];
		int pt = 0;

		for (int i = 0 ; i< arr.length ; i++ ) {	System.out.println("請(qǐng)輸入第" + (i + 1) + "個(gè)數(shù)");
			arr[i] = lll.nextInt();
		}

		System.out.println("您輸出數(shù)組的結(jié)果如下:");

		for (int j = 0; j< arr.length ; j++ ) {	System.out.print(arr[j] + " ");
		}
		System.out.println(" ");
		//這里如果要對(duì)初始化的數(shù)組進(jìn)行怕排序,可以使用冒泡排序進(jìn)行。
		System.out.println("請(qǐng)輸入您要插入的元素");

		int insert_element = lll.nextInt();
		int index = 0;

		for (int m = 0; m< arr.length; m++ ) {	if (insert_element< arr[m]) {		index = m;
				break;
			}else{		index = arr.length;
			}
		}

		int[] b = new int[arr.length + 1];
		for (int n = 0; n< b.length ; n++) {	if (n == index) {		b[n] = insert_element;
			} else if (n >index) {		b[n] = arr[n - 1];
			} else if (n< index) {		b[n] = arr[n];
			}
		}

		for (int k = 0; k< b.length ; k++) {	System.out.print(b[k] + " ");
		}

	}
}
public class array12 {public static void main(String[] args) {//隨機(jī)生成10個(gè)整數(shù)(1-100),保存到數(shù)組,并倒序打印以及求平均值,求大值和最小值的下標(biāo),并查找里面是否含有8.
		int[] arr = new int[10];

		for (int i = 0; i< arr.length ; i++) {	arr[i] = (int)(Math.random() * 100) + 1;
		}

		int sum = 0;
		int tag = 0;

		System.out.println("數(shù)組的正序輸出如下:");
		for (int m = 0; m< arr.length ; m++ ) {	System.out.print(arr[m] + "\t");
		}
		System.out.println(" ");
		
		System.out.println("數(shù)組的倒序輸出如下:");
		for (int j = arr.length - 1; j >= 0  ; j--) {	if (arr[j] == 8) {		tag = 1;//若含有8的話,則置為1;
			}
			sum += arr[j];
			System.out.print(arr[j] + "\t");//"\t"相當(dāng)與空4個(gè)空格,一個(gè)tab鍵。
		}
		System.out.println(" ");

		System.out.println("平均值為:" + (int)(sum / arr.length));

		int max = arr[0];
		int min = arr[0];
		int max_sub = 0;//大值的下標(biāo)
		int min_sub = 0;//最小值的下標(biāo)

		for (int k = 0; k< arr.length ; k++) {	if (arr[k] >max) {		max_sub = k;
				max = arr[k];
			}
			if (arr[k]< min) {		min_sub = k;
				min = arr[k];
			}
		}

		if (tag == 1) {	System.out.println("是否含有8:" + "True");
		} else {	System.out.println("是否含有8:" + "False");
		}

		System.out.println("大值下標(biāo)為:" + max_sub);
		System.out.println("最小值下標(biāo)為:" + min_sub);
	}
}
二維數(shù)組的JVM內(nèi)存布局

在這里插入圖片描述

二維數(shù)組的使用細(xì)節(jié)
一維數(shù)組的聲明方式有:int[ ] x 或者 int x[ ];
二維數(shù)組的聲明方式有:int[][] y 或者int[] y[] 或者 int y[][]
二維數(shù)組實(shí)際上是由多個(gè)一維數(shù)組組成的,它的每個(gè)一維數(shù)組的長度可以相同也可以不相同。
比如:arr[][] = {{1,2},{1,2,3,4}}

布爾類型的數(shù)值未賦值之前默認(rèn)為false。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)站題目:(四)java中數(shù)組的使用-創(chuàng)新互聯(lián)
鏈接地址:http://muchs.cn/article8/ceehop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、企業(yè)網(wǎng)站制作、自適應(yīng)網(wǎng)站、企業(yè)建站、網(wǎng)站導(dǎo)航、響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(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í)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作