Java学习第四章:数组

这篇博客详细介绍了Java中一维数组的概念,包括定义、创建、内存模型、初始化、访问、属性及异常处理。同时,讲解了数组的排序(冒泡排序和二分查找)和遍历方法,强调了数组长度不变及下标从0开始的重要特性。
摘要由CSDN通过智能技术生成

4.1一维数组

数组是相同类型的数据按照顺序组合后的一种引用类型。数组可以看成是多个相同类型数据的组合,实现对这些数据的统一管理。数组的长度一旦确定后就不能更改,因此它是一个固定长度的结构。数组结构中每个存储的数据叫数组元素,数组元素由索引来定位。索引(或叫数组下标)是指当前元素相对于第一个元素的位移,因此第一个元素的下标就是0,第二个元素的下标就是1,以此类推。

4.1.1数组的定义

我们用方括号“[]”来区分普通变量和数组变量。见下面声明整型数组的例子:
         int[] numbers;
上面的语句声明了一个数组numbers,它的元素都是整型的,但是现在并没有确定数组的长度,也就是说没有确定numbers里有多少个元素。

提示: 方括号“[]”既可以放在数据类型的后面,也可以放在数组名的后面,两者都可以标识一个数组的声明,但是第一种写法可读性更好些。

例如:

     char[] c;

        String strs[];

数组声明后,Java虚拟机就会给数组分配存储空间,情况如下图4.1所示。

在这里插入图片描述

4.1.2数组的创建

数组的长度在创建时指定,并且一旦指定就不能更改。创建数组有两种方式:

1.静态初始化
这种方式在声明的同时就直接初始化数组,同时也创建了数组空间。如:

int[] m = {3,75,234,41,16};

上面的语句运行后,就会创建一个数组m,这个数组的长度是5,他有5个元素,分别是3,75,234,41,16。

2.动态初始化
这·种方式只是按照指定的长度来创建数组空间,但是数组里的元素将初始化为缺省值(对字符来说,为’\u0000’),例如:

numbers = new int[6];

上面的语句运行后,会创建一个数组numbers,这个数组的长度是6,但是值都是0,使用这个数组前还需要进一步的赋值使之有效。

这种创建方式的语法是:

数组名 = new 数组类型[数组长度];

如:

 char[] c = new char[128];
    String[] strs = new String[10];
    double[] incoming = new double[73];

在这里插入图片描述

4.1.3数组的内存模型

数组是存储多个相同类型数据的对象。数组的所有元素保存在堆内存中。

创建一个数组就是在堆中创建一个数组对象。数组创建后立即拥有默认值。索引从0开始。连续分配

例如:

  int[ ] array ;
    array = new int [4] ;

在这里插入图片描述

4.1.4数组的初始化

数组的元素通过下标来标识,下标表示当前元素相对于第一个元素的位移,因此从0开始。比如name[0]就表示name数组的第1个元素,name[4]就表示name数组的第5个元素。其中方括号“[]”中的整数就是下标(又叫索引),要注意下标的范围从0~数组长度-1,如果访问超过范围的下标,就会发生ArrayIndexOutOfBoundsException下标越界异常。

数组类型 数组名[ ] = {
   元素1,元素2,…}
或者
数组类型 数组名[ ] = new 数据类型[ ]{
   元素1,元素2,…}

数组的初始化的两种方式如下:
在这里插入图片描述

例4.1 创建数组并初始化。

class Array_sample1 {
   
         public static void main(String args[]){
   
                   int a[];
                   a = new int[5];
                   for(int i=1;i<5;i++){
   
                            a[i-1] = i;
                   }       
         }
}
赋值后数组元素的值分别是1,2,3,4,5。

4.1.5数组的访问

数组元素的访问需要根据数组名和下标共同实现,格式如下图所示。

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

在这里插入图片描述

例4.2 数组元素的访问。

public class Array_sample2 {
   
     public static void main(String args[]){
   
           int num1[] = new int[5];
        num1[0] = 32;        //每个元素单独初始化
        num1[1] = 543;
        num1[2] = 17;
         num1[3] = 8;
        num1[4] = 95;
        int num2[] = new int[10];
        for(int i=0;i<10;i++){
           //采用循环方式初始化
             num2[i] = i+1;
        }
        System.out.println
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值