dataType[] arrayRefVar; //首选的方法 或者 dataType arrayRefVar[]; //效果相同,但不是首选方法
java语言使用new操作符来创建数组,语法如下:
dataType[] arrayRefVar = new dataType [arraySize];
arrays.length
public static void main(String[] args) { int[] nums;//声明了一个数组 nums = new int[10];//创建一个数组 nums[0] = 1; nums[1] = 2; nums[2] = 3; nums[3] = 4; nums[4] = 5; nums[5] = 6; nums[6] = 7; nums[7] = 8; nums[8] = 9; nums[9] = 10; //计算所有元素的和 int sum = 0; for (int i = 0; i < nums.length; i++) { sum = sum + nums[i]; } System.out.println("总和为"+ sum); }
int[] a = {1,2,3}; Man[] mans = {new Man(1,1),new Man(2,2)};
int[] a = new int[2]; a[0]=1; a[1]=2;
public static void main(String[] args){ int[] a = new int[2]; System.out.print(a[2]); }
public static void main(String[] args) { int[] arrays ={1,2,3,4,5}; //JDK1.5 for (int array : arrays) { } //(arrays); int[] reverse = reverse(arrays); printArray(reverse); } //打印数组元素 public static void printArray(int[] arrray) { for (int i = 0; i < arrray.length; i++) { System.out.println(arrray[i]+""); } } //反转数组 public static int[] reverse(int[] arrays){ int[] result = new int[arrays.length]; //反转操作 for (int i = 0,j = result.length-1; i <result.length ; i++,j--) { result[j] = arrays[i]; } return result; }
int a[][] = new int[2][5];
num[1][0];
public static void main(String[] args) { //[4][2] /* * * */ int[][] array = {{1,2},{2,3}, {3,4}, {4,5}}; for (int i = 0; i < array.length; i++) { for (int j = 0; j < array[i].length; j++) { System.out.println(array[i][j]); } }
数组的工具类java.util.Arrays
由于数组对象本身并没有什么方法可以共我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本的操作。
查看JDK帮助文档
Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而“不用”使用对象来调用(注意:是“不用”而不是“不能”)
具有以下常用功能:
import java.util.Arrays; public class ArrayDemo06 { public static void main(String[] args) { int[] a = {1,2,3,4,555,44,124,6,3}; System.out.println(a); //打印数组元素 System.out.println(Arrays.toString(a)); printArray(a); Arrays.sort(a); System.out.println(Arrays.toString(a)); } //重复造轮子 public static void printArray(int[] a){ for (int i = 0; i < a.length; i++) { if(i==0) { System.out.print("["); } if (i==a.length-1){ System.out.print(a[i]+"]"); }else { System.out.print(a[i] + ", "); } } System.out.println(); } }
import java.util.Arrays; public class ArrayDemo07 { public static void main(String[] args) { int[] a = {1,5,48,54,66,21,3}; int[] sort = sort(a);//调用完我们自己写的排序方法以后,返回一个排序后的数组 System.out.println(Arrays.toString(sort)); } //冒泡排序 //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-i-1; j++) { if (array[j+1]>array[j]){ temp= array[j]; array[j] = array[j+1]; array[j+1] = temp; } } } return array; } }
package com.baidu.array; import java.util.Arrays; public class ArrayDemo07 { public static void main(String[] args) { int[] a = {1,5,48,54,66,21,3}; int[] sort = sort(a);//调用完我们自己写的排序方法以后,返回一个排序后的数组 System.out.println(Arrays.toString(sort)); } //冒泡排序 //1.比较两个相邻的元素,如果第一个数大,我们就交换他们的位置 //2.每一次比较,都会产生出一个最大或者最小的数字 //3.下一轮则可以少一次排序 //4.一次循环,知道结束 public static int[] sort(int[] array){ int temp = 0 ; //外层循环,判断饿哦们要走多少次 for (int i = 0; i < array.length-1; i++) { boolean flag = false;//通过flag标识位减少没有意义的比较 //内存循环,比较两个数,如果第一个数比第二个数大,则交换位置 for (int j = 0; j < array.length-i-1; j++) { if (array[j+1]>array[j]){ temp= array[j]; array[j] = array[j+1]; array[j+1] = temp; flag = true; } } if (flag ==false) break; } return array; } }
public class ArrayDemo08 { public static void main(String[] args) { //创建一个二维数组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(); } 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("==================================="); System.out.println("还原"); //读取稀疏数组 int[][] arrray3 = new int[array2[0][0]][array2[0][1]]; //给其中元素还原它的值 for (int i = 1; i < array2.length; i++) { arrray3[array2[i][0]][array2[i][1]] = array2[i][2]; } //打印 System.out.println("输出还原的数组"); for (int[] ints : array1) { for (int anInt : ints) { System.out.print(anInt + "\t"); } System.out.println(); } } }