Java 数组

一维数组


一维数组的声明

type var [] ; 或 type [] var ;

例如

int a1 [] ; int [] a2 ;

double b[];

Person [] p1 ; String s1[];
  • 注意:Java语言中声明数组时不能指定其长度
int a[5];        //非法

数组对象的创建


  • Java中使用new关键字来创建数组对象
int s[] ;        //栈空间声明一个引用类型s用来指向数组对象
s = new int[5];  //堆空间中创建五个小格,并用s指向它们 
  • 可以看出Java中先创建数组的引用,再new出对象,默认初始化为0
  • 内存图

  • 另外附上对象数组的内存
  • 先有对象数组的引用days,days指向堆空间中的三个小格,这时要注意这三个小格中装的不是对象,**而是对象的引用。*

数组的使用


  • 数组名+下标访问
a[1] = 1 ;
person[1] = new Person(***);
  • 数组名.length,获得数组的长度。但是要注意,length是数组的属性不是方法,所以不用加小括号。
for(int i = 1 ; i <= s.length ; i++)
  • 主方法的参数中有String[] args,它是用来存放命令行参数的。都是字符串类型。

二维和多维数组


  • 二维数组可以看成数组的数组。

二维数组的声明

int a[][] = new int [3][];
//二维数组的引用有两个中括号(几维数组就有几个中括号)

Java中多维数组的声明要从高维到低维进行,就是从左到右进行。因为Java中的多维数组是数组的数组。假设第一维分出三个小格,而这三个小格中装的是一维数组的引用。如果先分配低维的话,就会造成没有东西指向它。

二维数组的声明

  • 静态初始化
//Java自动分配
int a[][] = { {1,2},{2,3},{3,4,5} };
//非法操作
int a[][] = { {1,2},{3,4},{4,5} };
  • 动态初始化
//直接分配
int a[][] = new int[3][5];
//每个维度挨个分配
int b[][] = new int[3][];
b[0] = new int[2];
b[1] = new int[3];
b[2] = new int[5];

二维数组的使用

  • 与一维数组相似

数组的拷贝


  • 使用java.lang.System类的静态方法
public static void arraycopy(object src,int srcPos,object dest,int destPos,int length)
//参数分别代表源数组引用、源数组拷贝起始位置、目标数组引用、目标数组粘贴起始位置、要拷贝多长
  • 如果是多维数组的拷贝,这个方法只拷贝第一维,有时会造成两个多维数组引用同时指向同一块内存。
posted @ 2018-03-26 21:46  isLiuhy  阅读(181)  评论(0编辑  收藏  举报