【Java基础知识 5】数组

目录

5.1 数组的概念

5.2 数组声明

5.3 数组创建与初始化

5.3.1 使用new创建数组

5.3.2 创建数组的三种方式

5.3.3 创建数组需要注意的问题

5.4 数组操作

示例5.1

示例5.2 随机数生成

5.5 数组排序

5.7 多维数组(选)

5.7.1 二维数组的声明、创建

5.7.2 单独为第二维分配内存

5.7.3 为二维数组使用初始化器

5.8 Arrays


5.1 数组的概念

一个具有固定大小,可以容纳相同类型数据的集合.

数组元素的类型:可以是基本类型,也可以是引用类型

数组可以认为是Java中最简单的复合类型。

数组的声明和使用,在语法上与C语言类似,但是在内部实现机制上有本质的区别。

5.2 数组声明

两种方式:强烈建议采用第一种方式

int[] nums; 或

int nums[];

5.3 数组创建与初始化

5.3.1 使用new创建数组

int[] nums; //声明数组,并没有创建数组,没有开辟堆内存。

nums = new int[5]; //创建数组,必须设置长度 开辟堆内存

new:用于分配内存的特殊运算符。通过new分配的数组,其元素会被自动初始化为0(对于数值类型)、false(对于boolean类型)或null(对于引用类型)。

说明:获得一个数据需要两个步骤,第一步是声明,第二步是创建数组对象。

一个数组就是一个对象。数组是动态创建的,所有对象都是动态创建的。

5.3.2 创建数组的三种方式

int[] nums = new int[5]; //初始化为默认值

int[] nums = {1,2,3,4,5}; //初始化为{}中指定的值,静态初始化

int[] nums = new int[] {1,2,3,4,5};//初始化为{}中指定的值,静态初始化

5.3.3 创建数组需要注意的问题

1、创建数组时必须知道数组的长度,否则new不知道要开辟多大的内存

2、第二种方式创建数组,必须在声明数组的同时创建数组

3、创建数组之后,数组的长度不能再改变。

说明:

数组的初始化分为静态初始化和动态初始化,静态初始化在初始化时由程序员显示指定每个数组元素的初始值,由系统决定数组长度。

5.4 数组操作

1、通过下标访问数组元素

为指定的数组元素赋值、使用数组元素。如果数组下标越界,会抛出异常。

2、通过循环处理数组(打印输出所有数组元素)

数组与循环是分不开的

3、可以使用length属性获取数组的长度,从而可以避免数组越界。

示例5.1

创建数组、静态初始化、遍历输出数组元素

示例5.2 随机数生成

使用Math类的random方法,动态初始化

生成常见随机数的方法

1、[ 0,1 )

double d = Math.random();

2、double型[0,99)

double d = Math.random()*99;

3、int型[0,99)

int i = (int) Math.random()*99;

总结:99是可以变的,如果要生成[0,50),

那就int i = (int) Math.random()*50;

4、int型[0,99]

int i = (int) Math.random()*100;

5、[m,n)

double d = m+Math.random()*(n-m);

6、[m,n]

double d = m+Math.random()*(n-m+1);

5.5 数组排序

5.5.1 排序(冒泡)

int[] nsum={85,88,99,15,68};
        for(int i=0;i<nsum.length-1;i++){
            for (int j=0;j<nsum.length-1-i;j++){
                if(nsum[j]>nsum[j+1]){
                    int temp = nsum[j];
                    nsum[j] = nsum[j+1];
                    nsum[j+1] = temp;
                }
            }
        }
        for(int i=0;i<nsum.length;i++){
            System.out.println(nsum[i]);
        }

5.5.2 Arrays.sort()

5.7 多维数组(选)

5.7.1 二维数组的声明、创建

在Java中,多维数组(multidimensional array)实际上是数组的数组。

下面声明了一个名为twoD的二维数组:

本质上,Java中只有一维数组。

int[][] twoD = new int[4][5];

int[] 表示int类型的数组,即数组元素为int类型

int[][] 表示int[]类型的数组,即数组元素为int[]类型

5.7.2 单独为第二维分配内存

当为多维数组分配内存时,可以只为第一(最左边的)维指定内存,之后再单独为余下的维分配内存。

int twoD[][] = new int[4][];

twoD[0] = new int[5];

twoD[1] = new int[5];

twoD[2] = new int[5];

twoD[3] = new int[5];

对于这种情况,第一维的长度必须指定。

int twoD[] = new int[][]; //错误

第二维的长度可以不同:

int twoD[][] = new int[4][];

twoD[0] = new int[1]; //twoD[0],本质是一维数组

twoD[1] = new int[2];

twoD[2] = new int[3];

twoD[3] = new int[4];

5.7.3 为二维数组使用初始化器

int[][] i= new int[3][];

int[] a1 ={1,2,3};

int[] a2 ={4,-5,6,9,0,8};

int[] a3 ={7,8};

下面这行代码 String[][] s=new String[10][];

A s 是一10行10列的数组。

B s 是一包含10个一维数组的二维数组。

C s中每个元素都为null。

D 该行代码非法。

特别注意:

二维数组,创建数组是,[][] 第一个必须指明长度

声明的有效方式:

int[][ ] ia1 = new int[2][3];

int[][ ] ia2 = new int[2][];

ia2[0] = new int[2], ia2[1] = new int[3];

Teacher[][] ta;

ta = new Teacher[2][];

ta[0] = new Teacher[3];

ta[1] = new Teacher[4];

无效的声明方式

int[][ ] ia1 = new int[][3];

Teacher[][] ta = new Teacher[][5];

5.8 Arrays

数组操作的工具类

使用Arrays类对数组进行排序,查找元素

Arrays.sort(XXX);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值