JAVA基础(七)之数组

----------------数组-------------

一维数组

第一种格式:
数据类型[] 数组名 = new 数据类型[元素个数或数组长度];

int[] x = new int[100];

//定义数组

       int[] arr=new int[5];

       arr[0]=1;

       arr[1]=100;

       arr[2]=50;

       System.out.println(arr);

 存储

可以把一维数组想象成一栋楼房

在未赋值时用0来填满整个楼。

0x001代表地址,

数组下标代表门牌号。

0x001地址赋给arr.

 

进行赋值

       arr[0]=1;

       arr[1]=100;

       arr[2]=50;
arr[0]=1;表示 地址为0x001的楼 将门牌号是下标为0 给1这个住户。以此类推。
没有住户的则用0来填充
所以     System.out.println(arr);打印的只是地址


输入不存在的数组,报错,

不定义的数组,用0补齐,一次只能一个数组


第二格式:
静态初始化:定义几个变量长度是几个

1、类型[] 数组名 = new 类型[]{元素,元素,……};

2、类型[] 数组名 = {元素,元素,元素,……};


double[] arr =new double[]{1.1,2.5,6.3};

String[] arr={"你好","悟空","哪吒"};

String[] arr={"你好","悟空","哪吒"};

      for(int i=0;i<arr.length;i++){

                 System.out.println(arr[i]);    

     }



求最大值:
求数组最大值.默认让第一个值当最大值 ,不停的与arr[0]进行对比

//求最大值

       int[] arr={80,6,1,50,22,11};

       int max=arr[0];

       for(int i=0;i<arr.length;i++){

 

 

           if(arr[i]>max){

              max=arr[i];

           }

       }

       System.out.println(max);


二维数组:
1、定义二维数组 外面是二维数组new装的是二维数组的容器,arr是地址集合 

第一个格式
int[][] arr=new int[2][3];

int[2][3]二维数组arr 中包含2个长度为3的一维数组。

可以把二维数组想象成二栋楼房

在未赋值时用0来填满整个楼。

0x001代表第一栋地址单元,0x002代表第二栋地址单元,

0x001单元,0x002单元地址为名为0x003的小区

数组下标代表门牌号。

     arr[0][0]=21;
可以读为0x003 的小区 第0x001单元的第一层住户为21

 

      System.out.println(arr[0]);
打印的是二维数组中的第一个一维数组arr[0]的地址

1.定义二维数组

   

  /* 定义数组*/
      int[][] arr=new int[2][3];

        arr[0][0]=21;

        arr[0][1]=22;

        arr[1][1]=23;

       System.out.println(arr[0]);//打印为地址--[I@15db9742

       System.out.println(arr);


整个二维数组地址
2、第二种定义方式

int[][] arr = new int[2][];

int arr[][] =new int[2][];
int [] a1={1,2,3};//a1存储的地址
int [] a2={4,5,6};

//建立关系
arr[0]=a1;//偷梁换柱之术,将定义的a1数组赋值到arr[0]
arr[1]=a2;
System.out.println(arr[0][0]);
//注意需要将定义的数组值赋值


3、第三种

int[][] arr = {{1,2},{3,4,5,6},{7,8,9}};

int [][] arr={{1,2},{2,3,4},{5}};
//双层循环遍历
  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();

       }

数组越界异常ArrayIndexOutOfBoundsException数组超出范围
空指针异常NullPointerException,即数组没有值

在Java中 方法的传参 基本数据类型 传的是值 值传递 值在该方法中 改变 属于局部变量改变 当出了该方法 就没有作用了

在Java中 方法的传参 引用数据类型 传的是地址值 当传入 arr数组在内存中的地址值后 堆内存中连续空间中值发生改变可以影响数组整体

原文地址:https://www.cnblogs.com/layuechuquwan/p/11243096.html