【JavaSE07】一维数组

1 声明

语法格式:

数据类型[] 数组名;// 首选的方法
int[] num;

数据类型 数组名[];// 效果相同,但不是首选方法
int num[];

注意:

  • 如果只是单纯的声明,不会被分配内存空间。

  • Java语言中声明数组时不能指定其长度(数组中元素的数)

  • 建议使用数据类型[] 数组名;的声明风格声明数组变量,数据类型 数组名[];风格是来自 C/C++ 语言 ,在Java中采用是为了让 C/C++ 程序员能够快速理解java语言。

2 初始化

声明数组的同时给数组赋值,叫做数组的初始化,数组元素间用逗号隔开。数组如果一旦初始化完成,其长度也就确定了。

2.1 静态初始化

在定义数组的同时就为数组元素分配空间并赋值。

语法格式:

数据类型[] 数组名 = {值1,值2,值3};

数据类型[] 数组名 = new 数据类型[]{值1,值2,值3};

 

2.2 动态初始化

数组声明且为数组元素分配空间与赋值的操作分开进行。

语法格式:

数据类型[] 数组名 = new 数据类型[数组元素个数];

数据类型[] 数组名;
数组名 = new 数据类型[数组元素个数];

3 引用

数组的引用即访问指定位置的数组元素,在Java中通过数组的索引(下标)实现。

语法格式:

数组名[数组元素下标];

注意:

  • 定义并用运算符new为之分配空间后,才可以引用数组中的每个元素;

  • 数组元素下标可以是整型常量或整型表达式。如a[3] , b[i] , c[6*i];

  • 长度为n的数组合法下标取值范围: 0 ~n-1;如int a[]=new int[3]; 可引用的数组元素为a[0]、a[1]、a[2]

  • 每个数组都有一个属性length指明它的长度(元素个数)。数组名.length;

4 遍历

遍历:访问数组的每一个元素,通过循环实现。

for (int i = 0; i < num.length; i++) {
 }

5 默认初始化值

数组是引用类型,它的元素相当于类的成员变量,因此数组一经分配空间,其中的每个元素也以成员变量同样的方式被隐式初始化。

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 内存解析

关于内存结构,简图如下所示:

 

其中:

  • 栈用来存放局部变量

  • 堆用来存放new出来的结构,如对象,数组;

数组是引用数据类型,属于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 案例

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 求累加和

//定义整型数组  
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]+"     ");  
}  

//求数组元素的累加和  
int sum=0;  
for(int i=0;i<a.length;i++){  
    sum=sum+a[i];  
}  
System.out.println();  
System.out.println("数组元素的累加和为:"+sum);  

7.3 使用foreach循环

int[] a={1,8,0,98,2};  
System.out.println();  
System.out.println("使用增强型for循环输出数组内容:");
for(int n:a){  
    System.out.print(n+"    ");  
}  

7.4 求最大值

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];  
    }  
}  

版权声明:
作者:jackqiang
链接:http://www.jackqiang.com/javase/array/2056/1d-array/
来源:JackQiang's
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>
文章目录
关闭
目 录