网站首页 > 技术文章 正文
问:数组的初始化方式有哪几种?
答:在Java语言中,一维数组的声明方式为type arrayName[]或type[]arrayName。
其中,type既可以是基本的数据类型,也可以是类,arrayName表示数组的名字,[]用来表示这个变量的类型为一维数组。
与C/C++语言不同的是,在Java语言中,数组被创建后会根据数组存放的数据类型初始化成对应的初始值(例如,int类型会初始化为0,对象会初始化为null)。另外一个不同之处是Java数组在定义时,并不会给数组元素分配存储空间,因此[]中不需要指定数组的长度,对于使用上面方式定义的数组在使用时还必须为之分配空间,分配方法为:
arrayName=newtype[arraySize];//arraySize表示数组的长度
在完成数组的声明后,需要对其进行初始化,下面介绍两种初始化方法:
1)int[]a=new int[5];//动态创建了一个包含5个整型值的数组,默认初始化为0
2)int[]a={1,2,3,4,5};//声明一个数组类型变量并初始化
当然,在使用时也可以把数组的声明和初始化分开来写,例如:
- int[]a;//声明一个数组类型的对象
aa=new int[5];//给数组a申请可以存放5个int类型大小的空间,默认值为0
- int[]a;//声明一个数组类型的对象
aa=new int[]{1,2,3,4,5};//给数组申请存储空间,并初始化为默认值
以上主要介绍了一维数组的声明与初始化的方式,下面介绍二维数组的声明与初始化的方式,二维数组有3种声明的方法:
1)type arrayName[][];
2)type[][]arrayName;
3)type[]arrayName[];
需要注意的是,在声明二维数组时,其中[]必须为空。
二维数组也可以用初始化列表的方式来进行初始化,其一般形式为:
Type arrayName[][]={{c11,c12,c13..},{c21,c22,c23..},{c31,c32,c33...}...};
除了以上介绍的方法以外,也可以通过new关键字来给数组申请存储空间,形式如下:
Type arrayname[][]=newtype[行数][列数]
与C/C++语言不同的是,在Java语言中,二维数组的第二维的长度可以不同。假如要定义一个有两行的二维数组,第一行有两列,第二行有三列,定义方法如下:
1)int[][]arr={{1,2},{3,4,5}};
2)int[][]a=new int[2][];
a[0]=new int[]{1,2};
a[1]=new int[]{3,4,5};
对二维数组的访问也是通过下标来完成,一般形式为arryName[行号][列号]。
常见笔试题:
1.下列数组的定义中,哪3条是正确的?()
A.public int a[]
B.static int[]a
C.public[]int a
D.private int a[3]
E.private int[3]a[]
F.public final int[]a
答案:A、B、F。见上面讲解。
2.下列数组定义及赋值中,错误的是()。
A.int intArray[];
B.intArray=new int[3];intArray[1]=1;intArray[2]=2;intArray[3]=3;
C.int a[]={1,2,3,4,5};
D.int[][]a=new int[2][];a[0]=new int[3];a[1]=new int[3];
答案:B。B中对数组的访问越界了。数组大小为3,数组第一个元素为intArray[0],最后一个元素为intArray[2]。
3.下列说法中,错误的有()。
A.数组是一种对象
B.数组属于一种原生类
C.int number[]={31,23,33,43,35,63}
D.数组的大小可以任意改变
答案:B、D。原生类指未被实例化的类,数组一般指实例化、被分配空间的类,所以不属于原生类。
4.下列语句中,创建了一个数组实例的是()
A.int[]ia=new int[15];
B.float fa=new float[20];
C.char[]ca=“SomeString”;
D.int ia[][]={4,5,6}{1,2,3};
答案:A。见上面讲解。
猜你喜欢
- 2024-12-17 C语言实现推箱子游戏!(超简单详细)代码思路+源码分享
- 2024-12-17 学习笔记之C#基础——数组和集合 c#中数组用法
- 2024-12-17 新函数REDUCE来了!Excel中的最强辅助,太强大了
- 2024-12-17 一篇文章学会golang语法,golang简明教程快速入门
- 2024-12-17 深入理解 Golang 中的值类型和引用类型
- 2024-12-17 SpringBoot系列之数据库初始化-datasource配置方式
- 2024-12-17 C++ 创建数组和使用数组学习笔记 c++如何建立数组
- 2024-12-17 Java Map 中那些巧妙的设计 javamap的用法
- 2024-12-17 大数据开发基础之一维数组的定义、初始化及与二维数组的区别
- 2024-12-17 go语言结构体与初始化 go 结构体初始化
- 1509℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 530℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 493℃MySQL service启动脚本浅析(r12笔记第59天)
- 473℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 470℃启用MySQL查询缓存(mysql8.0查询缓存)
- 451℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 430℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 427℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)