一维数组
一、声明数组变量
语 法
dataType[] arrayRefVar; // 首选的方法
or
dataType arrayRefVar[]; // 效果相同,但不是首选方法
//示例
double[] myList; // 首选的方法
double myList[]; // 效果相同,但不是首选
注:Java语言中声明数组时不能指定其长度(数组中元素的个数),这是因为数组是一种引用类型的变量,因此使用它定义一个变量时,仅仅表示定义了一个引用变量(也就是定义了一个指针),这个引用变量还未指向任何有效的内存,所以定义数组时不能指定数组的长度。而且由于定义数组仅仅是定义一个引用变量,并未指向任何有效的内存空间,所以还没有内存空间来存储数组元素,因此这个数组也不能使用,只有在数组进行初始化后才可以使用。
二、创建数组
arrayRefVar = new dataType[arraySize];
注:如果在创建数组的同时不初始化数组则必须指定其大小
上面的语法语句完成了两件事:
- 使用 new dataType[arraySize]创建了一个数组
- 把新创建的数组的引用赋值给arrayRefVar
附:一旦使用new关键字为数组分配了内存空间,每个内存空间存储的内容就是数组元素的值,也就是数组元素就有了初始值,即使这个内存空间存储的内容是空,这个空也是一个值null。也就是说不可能只分配内容空间而不赋初始值,即使自己在创建数组对象(分配内容空间)时没有指定初始值,系统也会自动为其分配
数组变量的声明+数组的创建可以合在一起:
dataType arrayRefVar=new dataType[arraySize];
三、一维数组的初始化
-
静态初始化
数组在初始化时由程序员显示指定每个数组元素的初始值而数组长度由系统决定。
-
动态初始化
数组在初始化时只指定数组的长度,由系统为数组元素分配初始值。
-
默认初始化
//静态初始化
dataType arrayName= new dataType[]{element1,element2,element3,...};
or
arrayName={element1,element2,element3,...};
//动态初始化
dataType dataType arrayName=new dataType[length];
注:一维数组这一块记住两点,数组声明的时候是不能指定大小的。另外一旦使用new关键字那么肯定在内存中为数组分配了空间,则必然数组有默认值。
数组进行动态初始化时系统分配初始值的规则
数组元素类型是基本类型中的整数类型(byte、short、int、long),则数组元素的值是0
数组元素类型是基本类型中的浮点类型(float、double),则数组元素的值是0.0
数组元素类型是基本类型中的字符类型(char),则数组元素的值是'\u0000'
数组元素类型是基本类型中的布尔类型(boolean)则数组元素的值是false
数组元素类型是基本类型中的引用类型(类、接口、数组)则数组元素的值是null
一维数组使用示例
package array;
import org.testng.annotations.Test;
/**
* @Description: Java 数组使用示例
* @Date: Created in 上午11:11 2018/11/6
*/
public class TestArray {
@Test
public void createArray() {
int size = 5;
int[] array1 = {1, 2, 3, 4, 5}; //静态初始化
int[] array2 = new int[]{1, 3, 5, 7, 9}; //静态初始化
int[] array3 = new int[size]; //动态初始化
array3[0] = 2;
array3[1] = 4;
array3[2] = 6;
array3[3] = 8;
visitArrat(array1);
visitArrat(array2);
visitArrat(array3);
}
//数组作为函数的参数
//数组作为函数的返回值
public int[] visitArrat(int[] array) {
System.out.println("访问数组" + array);
for (int element : array)
System.out.println(element);
return array;
}
}
//执行结果
访问数组[I@57829d67
1
2
3
4
5
访问数组[I@19dfb72a
1
3
5
7
9
访问数组[I@17c68925
2
4
6
8
0