数组
1】数组能顺序存储相同类型的多个数据,可以通过索引访问数据
2】所有元素的初始值都是0.0
3】数组一经创建,长度大小就是固定了
4】a.length获取数组a[]的长度,数组a的最后一个元素总是a[a.length-1]
5】如果你创建了一个大小为N的数组,但是使用了一个小于0或者大于N-1的索引访问它,程序会抛出ArrayIndexOutOfBoundsException异常而终止
6】数组起别名会导致难以察觉的问题,如果你像复制数组,应该声明创建并初始化一个新的数组,然后复制到新数组里去
package 数组; public class test { public static void main(String[] args) { int N = 10; // 完整模式 double[] a; a = new double[N]; for (int i = 0; i < N; i++) { a[i]=0.0; } //简化写法 double[] newa = new double[N]; //声明初始化 int[] b = {1,3,4,5,5}; } }
常用数组操作算法
package 数组; public class task { // 找出数组中最大的元素 public double findMax(double[] a) { double max = a[0]; for (int i = 0; i < a.length; i++) { if (a[i] > max) { max = a[i]; } } return max; } // 计算数组元素的平均值 public double findAverage(double[] a) { int N = a.length; double average = 0; double sum = 0.0; for (int i = 0; i < N; i++) { sum += a[i]; average = sum / N; } return average; } // 复制数组 public double[] copyArr(double[] a) { int N = a.length; double[] b = new double[N]; for (int i = 0; i < N; i++) { b[i] = a[i]; } return b; } // 颠倒数组元素的顺序 public double[] reversalArr(double[] a) { int N = a.length; for (int i = 0; i < N / 2; i++) { double temp = a[i]; a[i] = a[N - 1 - i];// 交换顺序为 第一个和最后一个交换,第二个和倒数第二个换,只换N/2遍即可 // N-1为最后一个数,N-1-i为需要交换的数 a[N - 1 - i] = temp; } return a; } // 矩阵相乘(方阵) public double[][] multiplyArr(double[][] a, double[][] b) { int N=a.length; double[][]c=new double[N][N]; for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { for (int k = 0; k < N; k++) { //计算行i和列j的点乘 c[i][j]+=a[i][k]*b[k][j]; } } } return c; } }
二维数组
1】初始化为0可以直接用简化,但是如果想要初始化为其他值,需要嵌套循环或手动初始化
int M=10;//这里的长度是必须给的 int N=10; double[][] a; a=new double[M][N]; for (int i = 0; i <M; i++) { for (int j = 0; j < N; j++) { a[i][j]=0.0; } } //简化写法 double[][] b = new double[M][N]; }
打印二维数组
for (int i = 0; i < c.length; i++) { for (int j = 0; j < c[i].length; j++) { System.out.print(c[i][j]+" "); } System.out.println("\n"); }