javase-数组

来源:互联网 发布:sd照片恢复软件 编辑:程序博客网 时间:2024/05/29 04:43

一.数组的本质

数组的本质是引用类型的数据。

二.数组的初始化

1.初始化方法

(1).int[] arr1;// 也可以写成 arr1[]

          arr1 = new int[3];

          arr1[0] = 0;

          arr1[1] = 1;

          arr1[2] = 2;

(2).int[] arr1 = new int [] {0, 1, 2};//最常用

(3).int [] arr1 = {0, 1, 2};

2.创建数组在内存中的情况

如:Int[] b =new int[3];

内存图:

b中保存的不是具体的数据。是在堆区中的数据的起始地址。

类似于b这样的变量,就称为引用类型变量。   数据不会保存在变量中,变量只是保存数据所在的内存地址。

3.数组创建好就不能改变其长度,只能通过new动态扩充数组(但不可能在原来的对象上扩充,集合将改善这一点)

4.数组没有初始化,则依据数组类型的不同,会预设不同的初始值。

如int型数组的初始值就是0。

5.length属性返回的是数组所能容纳的数,而不是实际存储的数。

三.多维数组

1.初始化  

import java.util.Random;/** * date:2017年4月16日09:04:24 * target:多维数组。 * @author ypy */ public class Test{static Random rand = new Random();static int pRand(int mod) {return Math.abs(rand.nextInt())%mod + 1;} public static void main(String[] args) {//基本数据类型初始化多维数组int[][] a1 = {{1, 2, 3},{4, 5, 6}};for (int i=0; i<a1.length; i++) {for (int j=0; j<a1[i].length; j++) {System.out.println("a1[" + i + "][" + j + "]:" + a1[i][j]);}}//基本数据类型用new立即分配三维数组boolean[][][] a2 = new boolean[2][3][4];for (int i=0; i<a2.length; i++) {for (int j=0; j<a2[i].length; j++) {for (int k=0; k<a2[i][j].length; k++){System.out.println("a2[" + i + "][" + j + "][" + k + "]:" + a2[i][j][k]);}}}//基本数据类型多维数组矩阵中每个矢量都可以有任意长度double[][][] a3 = new double[pRand(5)][][];for (int i=0; i<a3.length; i++) {a3[i] = new double[pRand(5)][];for (int j=0; j<a3[i].length; j++) {a3[i][j] = new double[pRand(5)];for (int k=0; k<a3[i][j].length; k++){System.out.println("a3[" + i + "][" + j + "][" + k + "]:" + a3[i][j][k]);}}}//非基本数据类型多维数组的初始化//java内部封装的类可以像基本数据类型一样使用,如Integer可以像int定义数组一样定义//而自己写的类必须newInteger[][] a4 = {{new Integer(1), new Integer(2)},{new Integer(3), new Integer(4)},{new Integer(5), new Integer(6)},};for (int i=0; i<a4.length; i++) {for (int j=0; j<a4[i].length; j++) {System.out.println("a4[" + i + "][" + j + "]:" + a4[i][j]);}}//非基本数据类型多维数组矩阵中每个矢量也都可以有任意长度Integer[][] a5;a5 = new Integer[3][];for (int i=0; i<a5.length; i++) {a5[i] = new Integer[4];for (int j=0; j<a5[i].length; j++) {a5[i][j] = new Integer(i*j);System.out.println("a5[" + i + "][" + j + "]:" + a5[i][j]);}}}}/* ***************jdk1.8运行结果*************** a1[0][0]:1a1[0][1]:2a1[0][2]:3a1[1][0]:4a1[1][1]:5a1[1][2]:6a2[0][0][0]:falsea2[0][0][1]:falsea2[0][0][2]:falsea2[0][0][3]:falsea2[0][1][0]:falsea2[0][1][1]:falsea2[0][1][2]:falsea2[0][1][3]:falsea2[0][2][0]:falsea2[0][2][1]:falsea2[0][2][2]:falsea2[0][2][3]:falsea2[1][0][0]:falsea2[1][0][1]:falsea2[1][0][2]:falsea2[1][0][3]:falsea2[1][1][0]:falsea2[1][1][1]:falsea2[1][1][2]:falsea2[1][1][3]:falsea2[1][2][0]:falsea2[1][2][1]:falsea2[1][2][2]:falsea2[1][2][3]:falsea3[0][0][0]:0.0a3[0][0][1]:0.0a3[0][0][2]:0.0a3[0][0][3]:0.0a3[0][1][0]:0.0a3[0][1][1]:0.0a3[0][1][2]:0.0a3[1][0][0]:0.0a3[1][0][1]:0.0a3[1][0][2]:0.0a3[1][0][3]:0.0a3[1][1][0]:0.0a3[1][1][1]:0.0a3[1][1][2]:0.0a3[1][1][3]:0.0a3[1][2][0]:0.0a3[1][2][1]:0.0a3[1][2][2]:0.0a3[1][3][0]:0.0a3[1][3][1]:0.0a3[1][3][2]:0.0a3[2][0][0]:0.0a3[2][0][1]:0.0a3[2][0][2]:0.0a3[2][0][3]:0.0a3[2][1][0]:0.0a3[2][2][0]:0.0a3[2][2][1]:0.0a3[2][2][2]:0.0a3[2][3][0]:0.0a3[3][0][0]:0.0a3[3][0][1]:0.0a3[3][0][2]:0.0a3[3][0][3]:0.0a4[0][0]:1a4[0][1]:2a4[1][0]:3a4[1][1]:4a4[2][0]:5a4[2][1]:6a5[0][0]:0a5[0][1]:0a5[0][2]:0a5[0][3]:0a5[1][0]:0a5[1][1]:1a5[1][2]:2a5[1][3]:3a5[2][0]:0a5[2][1]:2a5[2][2]:4a5[2][3]:6 */


2.内存图

如:

int[][] a = {

         {1,2,3},

         {4,5,6},

         {7,8,9}

    };

四.数组的拷贝

1.System.arraycopy方法。  

/*    时间:2016年1月26日20:21:07    目的:数组的拷贝。*/public class Shuzu_2{    public static void main(String[] args)    {int[] arr1 = new int[]{1, 2, 3, 4, 5};int[] arr2 = new int[]{-1, -2, -3, -4, -5};int i;System.arraycopy(arr1, 0, arr2, 1, 2);//  aar1数组下标从0开始的2个,覆盖掉arr2数组下标从1开始的System.out.printf("arr1 = \n");for (i=0; i<arr1.length; i++)//能直接调用  .length{    System.out.printf("%d ", arr1[i]);}System.out.printf("\n");System.out.printf("arr2 = \n");for (i=0; i<arr2.length; i++){    System.out.printf("%d ", arr2[i]);}    }}/****************结果***************arr1 =1 2 3 4 5arr2 =-1 1 2 -4 -5*/

2.Arrays.copyOf方法。

3.Arrays.copyOfRange方法。

五.数组的排序

1.Arrays.sort方法(从小到大排序)。

2.冒泡排序、快速排序等……

六.Arrays类(查api)

1.Arrays.toString方法可将数组以字符串的方式输出。

原创粉丝点击