JAVA基础——数组

  • 1. 什么是数组?
  • 2. 那如何声明一个数组呢:
  • 3. 数组使用
  • 4. length的使用
  • 5.数组的初始化
  • 6.数组的引用


1. 什么是数组?

数组是一系列相同类型的变量按照顺序组成的集合。
这些相同类型的变量为数组的单元或者元素。
数组通过组名加索引来使用该元素。
数组属于引用型变量,创建数组分为声明数组和分配变量两个步骤。
举个简单的例子:首先你需要一个盒子,然后才能往里面放东西。

2. 那如何声明一个数组呢:

数组包括数组名和数组类型

声明数组:
首先是一维数组:
数组的元素类型 数组名[ ] 例如:int a [ ];
数组的元素类型 [ ] 数组名 例如:int [ ] a;
再就是二维数组和一维形式形同:int a [] []; int [][]a;

分配数据
格式入下:
数组名 =new 数组元素的类型【数组的个数】
实际上就像羊肉串一样
例如:b=new int [4];这里的4是指分配了四个元素
数组属于引用型变量,数组变量存放着首元素的地址,然后通过索引来使用数组元素
引用类型变量保存对象的“引用”,即对象的地址
例子:
b[0]=1;
b[1]=2;
b[2]=3;
b[3]=1234;
而且声明数组和分配数据可以同时完成,例如:
int a[ ]=new int[4];
二维也相通;
int b[ ][ ]=new int [2][3];
二维数组更像是烧烤架,2是两串,3是每个肉串有3块肉。
然而二维数组的每个数组可以不同长度;例如:
int b[][]=new int [2][];
这样就有了二个一维的数组
而生成的数组没有大小;
b[0]=new int[3];
b[1]=new int[4];

3. 数组使用

一维数组通过索引来获取自己的元素b【0】,b[1];此时要注意,索引是从0开始的。不能越界,因此使用数组要谨慎。

4. length的使用

对于一维数组a.length指的是数组中元素的个数。
对于二维数组b.length指的是数组中一维数组的个数。

5.数组的初始化

float a[]={1.2f,1.3f,1.4f};
上述语句相当于
float boy[]=new boy[3];;
然后
boy[0]=1.2f;
boy[1]=1.3f;
boy[2]=1.4f;
原理相同可以用多个一维数组初始化二维数组;
int b[][]={{1}{1,2}{1,2,3}};

6.数组的引用

数组属于引用型数据,如果两个相同类型的数组有着相同的引用,那么就有相同的元素。
引用就是数据的内存地址。
int a[]={1,2,2},int b[]={133.31}
这时他们的引用不同,
a=b;
这时系统会收回分配给A的内存,使得A,B的引用相同就是拥有相同的元素。
这时int a[]={133,31};
例子:

public class 例子4 {
    public static void main(String[] args) {
        int a[]={1,2,3,4};
        int b[]={10,20,30};
        System.out.println("a的元素数"+a.length);
        System.out.println("b的元素数"+b.length);
        System.out.println("a的引用"+a);
        System.out.println("b的引用"+b);
        a=b;
        System.out.println("a的元素数"+a.length);
        System.out.println("b的元素数"+b.length);
        System.out.println("a[0]="+a[0]+",a[1]="+a[1]+",a[2]="+a[2]);
        System.out.println("b[0]="+b[0]+",b[1]="+b[1]+",b[2]="+b[2]);
        }
}
结果
a的元素数4
b的元素数3
a的引用[I@776ec8df
b的引用[I@4eec7777
a的元素数3
b的元素数3
a[0]=10,a[1]=20,a[2]=30
b[0]=10,b[1]=20,b[2]=30

值得注意的事,char类型的数组sout(a)不会输出他的引用,而是输出a的全部元素

char a[]={'你','好','啊'};
sout(a);
会输出:你好啊
想要输出char的引用就必须让数组a和字符串做并置运算
注:参与并置运算的string对象,只要有一个变量,那么java就会在动态区存放所得到的新string对象的实体和引用。
sout(""+a);
就会输出a的引用。