arrags.length
代码示例:
public static void main(String[] args) { //int[] nums = new int[10];一定要给大小,通过下标访问 int[] nums;//1.声明一个数组 nums = new int[10];//2.创建一个数组 //3.给数组元素赋值 for (int i = 0;i<10;i++){ nums[i] = i+1; } System.out.println(nums[0]); for (int i = 0;i<10;i++){ System.out.println(nums[i]); } //计算数组和 int sum = 0; for (int i = 0;i<nums.length;i++){ sum +=nums[i]; } System.out.println(sum); }
小结
- 数组是相同数据类型(数据类型可以为任意类型)的有序集合
- 数组也是对象,数组元素相当于对象的成员变量
- 数组的长度的确定是不可变得。如果越界,则报:ArrayIndexOutOfBoundsException
for-each循环
数组作方法入参
数组作返回值
综合代码示例
//打印数组元素 public static void printArray(int[] arrays){ for (int i = 0; i < arrays.length; i++) { System.out.println(arrays[i]); } } //反转数组 public static int[] reverse(int[] arrays){ int[] result = new int[arrays.length]; //反转操作 for (int i = 0,j=result.length-1; i <arrays.length ; i++,j--) { result[j] = arrays[i]; } return result; } public static void main(String[] args) { int[] arrays = {1,2,3,4,5}; printArray(arrays); int[] reverse = reverse(arrays); printArray(reverse); //打印全部的数组元素 for (int i = 0; i < arrays.length; i++) { System.out.println(arrays[i]); } System.out.println("----------"); //计算所有元素的和 int sum = 0; for (int i = 0;i<arrays.length;i++){ sum +=arrays[i]; } System.out.println(sum); System.out.println("----------"); //查找最大元素 int maxNum = 0; for (int i = 0;i<arrays.length;i++){ if(arrays[i]>maxNum) { maxNum =arrays[i]; } } System.out.println(maxNum); System.out.println("----------"); //for-each:JDK 1.5 for (int array : arrays){ System.out.println(array); } }
int[][] a = new int[2][5]
//创建二维数组 int[][] arrays2 = { {1,2}, {3,4} };
public static void main(String[] args) { int[] a = {65,62,548,84,1,5,4,8,65}; System.out.println(a);//对象的hashcode:[I@4554617c //打印数组元素 System.out.println(Arrays.toString(a)); /* Arrays.toString()源码 public static String toString(int[] a) { if (a == null) return "null"; int iMax = a.length - 1; if (iMax == -1) return "[]"; StringBuilder b = new StringBuilder(); b.append('['); for (int i = 0; ; i++) { b.append(a[i]); if (i == iMax) return b.append(']').toString(); b.append(", "); } } */ //数组排序 Arrays.sort(a); System.out.println(Arrays.toString(a)); }
//冒泡排序 //1.比较数组中,两个相邻的元素,如果第一个数大于第二个数,交换位置 //2.每一次比较,都会产生一个最大或最小数 //3.下一轮则可以少一次排序 //4.依次循环,直到结束 public static int[] sort(int[] array){ //临时变量 int temp = 0; //外层循环,判断走多少次 for (int i = 0; i < array.length-1; i++) { //内层循环,比较判断两个数,交换位置 //>:表示从大到小 //<:表示从小到大 for (int j = 0; j < array.length-1-i; j++) { if (array[j+1]>array[j]){ temp = array[j]; array[j] = array[j+1]; array[j+1] = temp; } } } return array; }
通过坐标记录元素
public static void main(String[] args) { //1.创建一个二维数组 11*11 0:没有棋子 1:黑 2:白 int[][] array1 = new int[11][11]; array1[1][2] = 1; array1[2][3] = 2; //输出原始数组 System.out.println("输出原始数组"); for (int[] ints: array1) { for (int anInt : ints){ System.out.print(anInt+"\t"); } System.out.println(); } //转换为稀疏数组 //获取有效值的个数 int sum = 0; for (int i = 0; i < 11; i++) { for (int j = 0; j < 11; j++) { if (array1[i][j] != 0){ sum++; } } } System.out.println("有效值个数:"+sum); //2.创建一个稀疏数组 int[][] array2 = new int[sum+1][3]; array2[0][0] = 11; array2[0][1] = 11; array2[0][2] = sum; //遍历二维数组,将非零的值存放在稀疏数组 int count = 0; for (int i = 0; i < array1.length; i++) { for (int j = 0; j < array1[i].length; j++) { if (array1[i][j] != 0){ count++; array2[count][0] = i; array2[count][1] = j; array2[count][2] = array1[i][j]; } } } //输出稀疏数组 System.out.println("稀疏数组"); for (int i = 0; i < array2.length; i++) { System.out.println(array2[i][0]+"\t" +array2[i][1]+"\t" +array2[i][2]+"\t"); } //还原 System.out.println("还原"); //1.读取稀疏数组 int[][] array3 = new int[array2[0][0]][array2[0][1]]; //2.给其中的元素还原它的值 for (int i = 1; i < array2.length; i++) { array3[array2[i][0]][array2[i][1]] = array2[i][2]; } //3.打印 System.out.println("输出还原的数组"); for (int[] ints: array3) { for (int anInt : ints){ System.out.print(anInt+"\t"); } System.out.println(); } }