首页 > 编程知识 正文

java自定义类数组赋值,定义一个数组并赋值

时间:2023-05-05 04:07:16 阅读:144579 作者:4996

Java一维数组的定义、赋值和初始化

如果数组中的每个元素只有一个下标,则该数组为一维数组。 一维数组基本上是同一类型数据的线性集合,是数组中最简单的数组。

数组是引用数据类型,引用数据类型在使用之前必须做两件事:声明和初始化。 因此,本文重点介绍一维数组的创建、初始化和使用。

创建一维数组

要在程序中使用数组,必须声明引用数组的变量,并指定整个变量可以引用的数组类型。 声明的一维数组的语法格式如下:

类型[ ] array name; //数据类型[]数组名称

或者

类型阵列名称[ ]; //数据类型数组名称[];

可以看到数组声明有两种格式:大括号[]、元素数据类型后面的格式、大括号[]、变量名称后面的格式。

对于上述两种语法格式,Java建议使用第一种声明格式。 这是因为最初的格式更有语义和可读性。 第一种格式type[] arrayName很容易理解,它定义了变量名称为arrayName且变量类型为type[]的变量。

正如已经指出的那样,type[]确实是一种新型,与type型完全不同。 例如,int型是基本型,而int[]是参照型。 因此,这种方式容易理解,也符合定义变量的语法。 但是,第二种格式type arrayName[]不容易阅读。 虽然看起来定义了类型变量,但变量名称为arrayName[],这与真正的含义相差甚远。

一些读者可能很喜欢定义数组的方法,如type arrayName[],这可能是因为早期计算机读物的误导。 从现在开始最好不要用这种坏方法。

提示:模仿Java的C#不再支持名为type arrayName[]的语法。 仅支持定义数组的第一个语法。 越来越多的语言不再支持数组定义语法,如type arrayName[]。

可以用这两种形式声明数组。 其中的数据类型既可以是基本数据类型,也可以是引用数据类型。 数组名称可以是任何合法的变量名称。 声明数组是指将数组中的数据类型传达给计算机。 例如:

int[]分数; //保存学生成绩,类型为整数

双精度[ ] price; //保存商品的价格,类型为浮点型

字符串[]name; //保存商品名,类型为字符串型

声明数组时,不需要指定数组的长度。 示例:

int score[10]; //这是错误的

注意:声明数组变量时,请不要忘记[]。

分配空间

声明了数组。 只是得到了存储数组的变量,没有给数组元素分配内存空间,不能使用。 因此,要为数组分配内存空间,数组中的每个元素都必须有一个空间。

简单来说,分配空间就是指示计算机分配内存中的几个连续位置来存储数据。 在Java中,可以使用new关键字为数组分配空间。 分配空间的语法格式如下:

arrayName=new type[size]; //数组名称=new数据类型[数组长度]

其中,数组的长度是数组中可以存储的元素数,必须是明显大于0的整数。 示例:

score=new int[10];

price=new double[30];

name=new String[20];

这里的score是已经声明的int[]类型的变量。 当然,也可以在声明数组时分配空间。 语法格式如下:

type[] arrayName=new type[size]; //数据类型[]数组名称=new数据类型[数组长度];

例1

例如,声明并分配一个长度为5的int类型数组arr,如下例所示:

int[] arr=new int[5];

执行后的arr数组在存储器内的格式如图1所示。

图1一维数组的内存格式

在图1中,arr是数组名,方括号“[]”内的值是数组的下标。 数组通过下标区分数组中的不同元素,下标从0开始。 因此,这里包含5个要素的arr数组的最大下标为4。

注:声明数组大小后,不能更改。 这里的数组也需要长度,不能少。

数组可以包含一组基本数据类型的元素,但整个数组都是引用数据类型。 声明数组变量时,实际上会创建具有表1所示方法和属性的“数据类型[]”数组对象。 例如int[]、double[]、String[] )。

表1数组的方法和属性

方法

名字

返回值

clone () ) )

对象

是equals (对象)

布尔型

getClass()

Class>

hashCode()

int

notify()

void

notify All()

void

toString()

String

wait()

void

wait(long timeout)

void

wait(long timeout,int nanos)

void

属性

length

int

初始化一维数组

Java 语言中数组必须先初始化,然后才可以使用。所谓初始化,就是为数组的数组元素分配内存空间,并为每个数组元素赋初始值。

能不能只分配内存空间,不赋初始值呢?

不行,一旦为数组的每个数组元素分配了内存空间,每个内存空间里存储的内容就是该数组元素的值,即使这个内存空间存储的内容为空,这个空也是一个值(null)。不管以哪种方式来初始化数组,只要为数组元素分配了内存空间,数组元素就具有了初始值。初始值的获得有两种形式,一种由系统自动分配,另一种由程序员指定。

数组在初始化数组的同时,可以指定数组的大小,也可以分别初始化数组中的每一个元素。在 Java 语言中,初始化数组有以下 3 种方式。

1)使用 new 指定数组大小后进行初始化

使用 new 关键字创建数组,在创建时指定数组的大小。语法如下:

type[] arrayName = new int[size];

创建数组之后,元素的值并不确定,需要为每一个数组的元素进行赋值,其下标从 0 开始。

例 2

创建包含 5 个元素的 int 类型的数组,然后分别将元素的值设置为 1、2、3、5 和 8。代码如下:

int[] number = new int[5];

number[0] = 1;

number[1] = 2;

number[2] = 3;

number[3] = 5;

number[4] = 8;

如果程序员只指定了数组的长度,那么系统将负责为这些数组元素分配初始值。指定初始值时,系统按如下规则分配初始值。

数组元素的类型是基本类型中的整数类型(byte、short、int 和 long),则数组元素的值是 0。

数组元素的类型是基本类型中的浮点类型(float、double),则数组元素的值是 0.0。

数组元素的类型是基本类型中的字符类型(char),则数组元素的值是‘u0000’。

数组元素的类型是基本类型中的布尔类型(boolean),则数组元素的值是 false。

数组元素的类型是引用类型(类、接口和数组),则数组元素的值是 null。

2)使用 new 指定数组元素的值

使用上述方式初始化数组时,只有在为元素赋值时才确定值。可以不使用上述方式,而是在初始化时就已经确定值。语法如下:

type[] arrayName = new type[]{值 1,值 2,值 3,值 4,• • •,值 n};

例 3

更改例 2 中的代码,使用 new 直接指定数组元素的值。代码如下:

int[] number = new int[]{1, 2, 3, 5, 8};

上述代码的效果等价于例 2 的效果。

注意:不要在进行数组初始化时,既指定数组的长度,也为每个数组元素分配初始值,这样会造成代码错误。例如下面代码:

int[] number = new int [5] {1,2,3,4,​5};

3)直接指定数组元素的值

在上述两种方式的语法中,type 可以省略,如果已经声明数组变量,那么直接使用这两种方式进行初始化。如果不想使用上述两种方式,那么可以不使用 new 直接指定数组元素的值。语法如下:

type[] arrayName = {值 1,值 2,值 3,...,值 n};

例 4

在前面例子的基础上更改代码,直接使用上述语法实现 number 数组的初始化。代码如下:

int[] number = {1,2,3,5,8};

使用这种方式时,数组的声明和初始化操作要同步,即不能省略数组变量的类型。如下的代码就是错误的:

int[] number;

number = {1,2,3,5,8};

获取单个元素

获取单个元素是指获取数组中的一个元素,如第一个元素或最后一个元素。获取单个元素的方法非常简单,指定元素所在数组的下标即可。语法如下:

arrayName[index];

其中,arrayName 表示数组变量,index 表示下标,下标为 0 表示获取第一个元素,下标为 array.length-1 表示获取最后一个元素。当指定的下标值超出数组的总长度时,会拋出 ArraylndexOutOfBoundsException 异常。

例 5

获取 number 数组中的第一个元素、最后一个元素和第六个元素,并将元素的值输出。代码如下:

int[] number = {1,2,3,5,8};

System.out.println("获取第一个元素:"+number[0]);

System.out.println("获取最后一个元素:"+number[number.length-1]);

System.out.println("获取第6个元素:"+number[5]);

执行上述代码,输出结果如下所示:

获取第一个元素:1

获取最后一个元素:8

java.lang.ArrayIndexOutOfBoundsException: 5

我们一共存入了 5 个值,所以下标的取值为 0~4。因为 number[5] 取出的内容超过了这个下标,所以输出结果会提示数组索引超出绑定异常(ArrayIndexOutOfBoundsException)。这一点是在使用数组中是经常出现的问题,大家在编写程序时应该引起注意。

例 6

编写一个 Java 程序,使用数组存放录入的 5 件商品价格,然后使用下标访问第 3 个元素的值。

import java.util.Scanner;

public class Test06 {

public static void main(String[] args) {

int[] prices = new int[5]; // 声明数组并分配空间

Scanner input = new Scanner(System.in); // 接收用户从控制台输入的数据

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

System.out.println("请输入第" + (i + 1) + "件商品的价格:");

prices[i] = input.nextInt(); // 接收用户从控制台输入的数据

}

System.out.println("第 3 件商品的价格为:" + prices[2]);

}

}

上述代码的“int[] prices = new int[5]”语句创建了需要 5 个元素空间的 prices 数组,然后结合 for 循环向数组中的每个元素赋值。

注意:在 Java 中取得数组的长度(也就是数组元素的长度)可以利用“数组名称.length”,返回一个 int 型数据。

数组的索引从 0 开始,而 for 循环中的变量 i 也从 0 开始,因此 score 数组中的元素可以使用 scored 来表示,大大简化了代码。最后使用 prices[2] 获取 prices 数组的第 3 个元素,最终运行效果如下所示。

请输入第1件商品的价格:

5

请输入第2件商品的价格:

4

请输入第3件商品的价格:

6

请输入第4件商品的价格:

4

请输入第5件商品的价格:

8

第 3 件商品的价格为:6

获取全部元素

当数组中的元素数量不多时,要获取数组中的全部元素,可以使用下标逐个获取元素。但是,如果数组中的元素过多,再使用单个下标则显得烦琐,此时使用一种简单的方法可以获取全部元素——使用循环语句。

下面利用 for 循环语句遍历 number 数组中的全部元素,并将元素的值输出。代码如下:

int[] number = {1,2,3,5,8};

for (int i=0;i

System.out.println("第"+(i+1)+"个元素的值是:"+number[i]);

}

除了使用 for 语句,还可以使用 foreach 遍历数组中的元素,并将元素的值输出。代码如下:

for(int val:number) {

System.out.print("元素的值依次是:"+val+"t");

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。