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时读取的是改变后的数组

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值