Java基础知识(四)——数组


目录

  • Java基础知识(四)——数组
  • 一维数组
  • 格式
  • 概念
  • 格式
  • 数组长度的获取
  • 数组的静态初始化
  • 二维数组
  • 格式
  • 二维数组静态初始化
  • 多维数组
  • 数组的传递


一维数组

格式



数据类型 数组名称[]=null;         //声明数组
数组名称 =new 数据类型[长度]      //分配内存给数组

eg.

int score[]=null;         //声明整型数组score
score =new int[3]      //分配内存给数组score,其元素数量为三个

概念

在声明数组后该数组被看作是一个数组类型的变量,此时该变量不包含任何信息。此时会在栈空间里分配一个空间用来保存指向数组实体的地址的名称
注:
null表示引用数据类型的默认值
在声明变量时一定要给出默认值
在完成申明后进行堆内存的分配
在栈内存中储存数组名称,在堆内存从储存数据
一个堆内存可被多个栈内存所指

格式



数据类型 数组名[] = new 数据类型[个数]

eg.

public class Test{
  public static void main(String[] args){
    int score[]=null;
    score=new int[3];
    for(int x = 0;x < 3;x++)
    {
      score[x] = x*2+1;
    }
    for (int x=0;x<3;x++){
       System.out.println("score["+x+"]="+score[x]);
    }     
  }
}

数组长度的获取



数组名称.length          //返回一个int型数据
System.out.println("长度为:"+score.length);

数组的静态初始化

在声明数组之后向数组内容赋值称为动态初始化
在声明数组时向数组内容赋值称为静态初始化
eg.

数据类型 数组名[]={初值0,初值1,初值2...初值n}

二维数组

格式



数据类型 数组名[][];
数组名 = new 数据类型[行的个数][列的个数]

数据类型 数组名[][]=new 数据类型[行的个数][列的个数]



int score[][];
score=new int[4][3];

int score[][]=new int[4][3]

eg.

public class Test{
  public static void main(String[] args){
    int score[][]=int new int[4][3];
    score[0][1]=30;
    score[1][0]=31;
    score[1][1]=42;
    score[3][2]=45;
    for(i=0;i<score.length;i++){            //外层循环行
        for(j=0;score[i].length;j++{        //内层循环列
           System.out.println(score[i][j]+"\t");
        }
      System.out.println("");
    }           
  }
}

二维数组静态初始化



数据类型 数组名称[][]={
  {第0行初值};
  {第1行初值};
  };

多维数组



public class Test{
  public static void main(String[] args){
      int score[][][]={{{5,1},{6,7}},{{9,4},{8,3}}};
      for (int i=0;i<score.lenngth;i++){                //第一层循环
          for(int j;j<score[i].length;j++){             //第二层循环
              for(int k;k<score[i][j].length;k++){      //第三层循环
                  System.out.println("score["+i+"]["+j+"]["+k+"]="+score[i][j][k]);
                  }
              }
          }            
  }
}



score[0][0][0]=5 
score[0][0][1]=1
score[0][1][0]=6
score[0][1][1]=7
score[1][0][0]=9
score[1][0][1]=4
score[1][1][0]=8
score[1][1][1]=3


在数组中score[].length很重要,用作对于数组中元素数量的统计,在数组的循环中很重要

数组的传递



public class Test{
  public static void main(String[] args){
    int temp[]={1,3,5};
    fun(temp);
    for(int i=0;i<temp.length;i++){
      System.out.print(temp[i]+"、");
      }               
  }
public static void fun(int x[]){
  x[0]=6;
  }  
}


1、在数组声明时栈空间中仅存在一个区域来存放temp[],堆空间中3个区域分别存放数组temp的三个元素;由栈空间的temp指向堆空间中的三个元素
2、在将数组传递到方法的时候,在栈空间中会开辟一个新的区域来储存x[];x[]指向堆空间中的元素
3、方法中的数组x[]修改内容实质上实在修改堆空间中的元素
4、方法执行完后x失效,此时只有temp可指向堆空间,且此时堆空间中的元素是x作用时改变的,因此在读取数组temp时读取的是改变后的数组