知识准备:一维数组的初始化
来源:互联网 发布:淘宝街拍用什么镜头 编辑:程序博客网 时间:2024/05/17 01:20
http://book.2cto.com/201210/7718.html
Java数组的初始化主要分为两种:静态初始化和动态初始化。在了解这两种初始化方式之前,先看一下Java提供的数组默认初始化。
Java为了保证安全性,防止内存缺失,为已创建的数组提供了默认初始化机制。在创建成功一个数组后,将完成如下3个动作:
创建一个数组对象。
在内存中给数组分配存储空间。
给数组的元素初始化一个相应的数据类型的默认值。比如,将int类型的数组各个元素初始化为0,引用类型是null等。
将任务一中的程序稍做修改,让它打印出数组第一个元素的默认值:
源文件:NumberLength.java
public class NumberLength {
public static void main(String[] args) {
int[] numberArray;
numberArray = new int[6];
System.out.println("请输入长度为" + numberArray.length+"位开机密码");
System.out.println("第一位密码默认初始化值是:" + numberArray[0]);
}
}
在这个程序中,首先声明了一个int类型的数组,然后,利用new操作符创建了一个长度为6的数组,它将给这个数组分配存储空间并且初始化这些数组元素,在这里将给这些数组元素一个值0;最后,试图向控制台打印出这个数组第一个元素的值,因为Java中的数组索引(下标)是从0开始的,所以,第一个数组元素对应的索引为0,所以可以通过numberArray [0]的方式来得到数组的第一个元素的值。
编译并运行这个程序,将打印出如下的信息:
请输入长度为6位开机密码
第一位密码默认初始化值是:0
其实,此时在这个数组中的任何一个元素的值都是0。读者可以自己修改数组的索引来获得不同的数组元素,注意这个数组的索引取值在0~10之间。
但是,通常情况下,定义一个数组并不是想用系统自动给的默认值,而是自己给数组的值。这时,就需要对数组进行初始化操作。也就是说,给数组的各个元素指定对象的值。
下面来看静态和动态这两种初始化方式的方法及它们的区别。
1)静态初始化
所谓静态初始化,就是在定义数组的时候就对数组进行初始化,如下:
int k[] = {1,3,5,7,9};
在这个例子中,定义了一个int类型的数组k,并且用大括号中的数据对这个数组进行了初始化,各个数据之间用“,”分割开。此时数组的大小由大括号中的用于初始化数组的元素个数决定,注意不要在数组声明中指定数组的大小,否则将会引起错误。在这个例子中,将数组声明、数组的创建及数组的初始化都放在了同一条语句中,在这边并没有使用到new来创建这个数组。其等同于
int k[] =new int[5]
k[] = {1,3,5,7,9};
来看一个静态初始化的例子:
源文件:StaticOpenNunber.java
public class StaticOpenNunber {
public static void main(String[] args) {
int numberArray[] = { 6, 5, 4, 3, 2, 1 };
System.out.println("默认开机密码为");
for (int i = 0; i < numberArray.length; i++) {
System.out.println(numberArray[i]);
}
}
}
在这个例子中,利用静态方式对数组进行初始化。这个数组的长度是数组中的元素的个数:6。然后用一个for循环将数组的各个元素取出来打印到控制台。程序执行的结果如下:
默认开机密码为654321
注意在这边用到了前面所论述的用于获得数组长度的方法:使用数组的length属性,用它来获得数组的长度。
在Java中,还可以利用静态初始化的方法来初始化一个匿名的数组,方法如下:
new type[] {… }
例如:
new String[] {"abc","cde","efg"}
可以通过这种方法来重新初始化一个数组,例如,有一个String类型的数组,它通过下面的静态方式被初始化:
String[] s = {"tom","jerry","mickey"};
此时,可以对s这个数组变量进行重新初始化,如下:
s = new String[]{"abc","cde","efg"};
这条语句等同于下面的两条语句:
String[] temp = {"abc","cde","efg"};
s = temp;
可以只给一部分元素赋值。例如:
int a[10]={0,1,2,3,4};
只给前5个元素赋值,后5个元素为0。
初始化之后:a[0]=0,a[1]=1,a[2]=2,a[3]=3,a[4]=4,a[5]=0,…,a[8]=0,a[9]=0。
对全部数组元素赋初值时,可以不指定数组长度。例如:
int a[]={1,2,3,4,5};
上面的写法中,{ }中只有5个数,系统会据此自动定义数组的长度为5。初始化之后:a[0]=1,a[1]=2,a[2]=3,a[4]=4,a[5]=5。如果被定义的数组长度与提供初值的个数不同,则数组长度不能省略。例如:
想定义数组长度为10,就不能省略数组长度的定义。而必须写成:
int a[10]={ 1,2,3,4,5};
只初始化前面5个元素,后5个元素为0。不能写成:
int a[ ]={1,2,3,4,5};
2)动态初始化
所谓动态初始化,就是将数组的定义和空间分配与给数组元素赋值分开。创建时系统进行数组的默认初始化。例如,对数组中的元素一个个地分别指定它们各自对应的值,这些赋值可以在程序的任意位置:
char ch = new char[3];
ch[0] = a;
ch[1] = b;
ch[2] = c;
或者用一个循环来对一个数组一次赋值,例如:
char[] ch;
ch = new char[26];
for ( int i=0; i<26; i++ ) {
ch[i] = (char) ('A' + i);
}
- 知识准备:一维数组的初始化
- 一维数组的初始化
- 一维数组初始化
- 一维数组的初始化问题
- 一维数组的初始化问题
- 【C++】 一维数组的初始化
- 一维数组的初始化问题
- C++一维数组初始化
- 20130507一维数组初始化
- 一维数组,二维数组初始化
- 项目经理知识准备 CMM 一
- 爬虫系列一:准备知识
- Asp.net 知识准备一
- java int类型一维数组的初始化
- c语言一维数组的定义、初始化
- Java一维数组的声明、初始化和引用
- 一维、二维数组的初始化及引用(略)
- 准备开始学硬件的知识(一)
- 最小生成树,继续水~
- 并查集~
- 遇到的第一个上面特判题...刚开始以为样例错了...其实真错了~
- 又遇到一个奇葩问题....输出double用%f...
- 又想吐槽一下了...同样是DP,差别咋就那么大呢?
- 知识准备:一维数组的初始化
- pku 1830 开关问题(构造矩阵+高斯消元)
- iOS 创建universal app
- UVa 557 - Burger
- 转:linux GPIO驱动
- 学生信息管理系统--登录调试(错误‘91’)
- 索骥馆-效率管理之《凡事巧于方法:分析问题和解决问题的精妙解析》高清扫描版[PDF]
- 十进制转化16进制,8进制
- python 合并排序