一、一维数组的声明和初始化
1.1 一维数组的声明方式
语法格式:
数据类型[] 数组名;// 首选的方法
或
数据类型 数组名[];// 效果相同,但不是首选方法
注意:
- 如果只是单纯的声明,不会被分配内存空间。
- Java语言中声明数组时不能指定其长度(数组中元素的数)
- 建议使用
数据类型[] 数组名;
的声明风格声明数组变量,数据类型 数组名[];
风格是来自 C/C++ 语言 ,在Java中采用是为了让 C/C++ 程序员能够快速理解java语言。
1.2 一维数组的静态初始化
在定义数组的同时就为数组元素分配空间并赋值。
语法格式:
数据类型[] 数组名 = {值1,值2,值3};
或
数据类型[] 数组名 = new 数据类型[]{值1,值2,值3};
注意:声明数组的同时给数组赋值,叫做数组的初始化,数组元素间用逗号隔开
1.3 一维数组的动态初始化
数组声明且为数组元素分配空间与赋值的操作分开进行。
语法格式:
数据类型[] 数组名 = new 数据类型[数组元素个数];
或
数据类型[] 数组名;
数组名 = new 数据类型[数组元素个数];
二、一维数组元素的引用
数组的引用即访问指定位置的数组元素,在Java中通过数组的索引(下标)实现。
语法格式:
数组名[数组元素下标];
注意:
- 定义并用运算符new为之分配空间后,才可以引用数组中的每个元素;
- 数组元素下标可以是整型常量或整型表达式。如a[3] , b[i] , c[6*i];
- 数组元素下标从0开始;
- 长度为n的数组合法下标取值范围: 0 ~n-1;如int a[]=new int[3]; 可引用的数组元素为a[0]、a[1]、a[2];
- 数组一旦初始化,其长度是不可变的;
三、一维数组获取数组长度
每个数组都有一个属性length指明它的长度(元素个数)。
语法格式:
数组名.length;
四、一维数组的遍历
遍历:访问数组的每一个元素。通过循环实现。
五、一维数组元素的默认初始化值
数组是引用类型,它的元素相当于类的成员变量,因此数组一经分配空间,其中的每个元素也被按照成员变量同样的方式被隐式初始化。
5.1 对于基本数据类型
默认初始化值各有不同,具体如下表:
数组元素类型 | 元素默认初始值 |
---|---|
byte | 0 |
short | 0 |
int | 0 |
long | 0L |
float | 0.0F |
double | 0.0 |
char | 0 或写为:’\u0000’(表现为空) |
boolean | false |
总结:
- 所有整型的初始值都是0(long型注意加上L);
- 所有浮点型的初始值都是0.0(float注意加上f或F);
- char类型的初始值不是’0’,不是空格,而是0;
5.2 对于引用数据类型
默认初始化值为null,表示空值(注意与0不一样)。
六、一维数组的内存解析
6.1 内存的简化结构
栈:存放局部变量;
堆:存放new出来的结构,如对象,数组;
6.2 一维数组的内存解析
方法中的变量被称为局部变量,因此数组名是存储在栈内存中;而数组又是引用数据类型,属于new出来的结构,则会被存放在堆内存中。
public class Test{
public static void main(String args[]){
int[] s;//单纯的声明,此时没有分配内存空间
s = new int[10];//①
//int[] s=new int[10];
//基本数据类型数组在显式赋值之前,
//Java会自动给他们赋默认值。
for ( int i=0; i<10; i++ ) {
s[i] =2*i+1;//②
System.out.println(s[i]);
}
}
}
①时内存状态:
②时内存状态:
七、一维数组案例
7.1 一维数组使用示例
// 声明一个整型数组
int[] intArray;
//声明一个字符串类型的数组
String strArray[];
//创建数组
intArray=new int[5];
strArray=new String[10];
//声明数组的同时进行创建
float[] floatArray=new float[4];
//初始化数组
char[] ch={'a','b','c','d'};
System.out.println("ch数组的长度为:"+ch.length);
System.out.println("intArray数组的第2个元素为:"+intArray[1]);
System.out.println("strArray数组的第5个元素为:"+strArray[4]);
System.out.println("floatArray数组的最后一个元素"+floatArray[floatArray.length-1]);
16. //循环为整型数组赋值
for(int i=0;i<5;i++){
intArray[i]=i+1;
}
//循环输出整型数组中的元素
System.out.println("整型数组intArray的元素为:");
for(int i=0;i<5;i++){
System.out.print(intArray[i]+" ");
}
7.2 求整型数组的累加和,使用foreach循环输出数组元素
//定义整型数组
int[] a=new int[5];
Scanner sc=new Scanner(System.in);
//从键盘接收数据,为数组元素赋值
for(int i=0;i<a.length;i++){
System.out.println("请输入第"+(i+1)+"个元素:");
a[i]=sc.nextInt();
}
System.out.println("数组元素的内容为:");
for(int i=0;i<a.length;i++){
System.out.print(a[i]+" ");
}
System.out.println();
System.out.println("使用增强型for循环输出数组内容:");
for(int n:a){
System.out.print(n+" ");
}
//求数组元素的累加和
int sum=0;
for(int i=0;i<a.length;i++){
sum=sum+a[i];
}
System.out.println();
System.out.println("数组元素的累加和为:"+sum);
7.3 求数组元素的最大值
int[] a={34,23,78,56,31};
int max=a[0];
for(int i=1;i<a.length;i++){
if(max<a[i]){
max=a[i];
}
}