网站首页 > 技术文章 正文
问:数组的初始化方式有哪几种?
答:在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 结构体初始化
- 02-21走进git时代, 你该怎么玩?_gits
- 02-21GitHub是什么?它可不仅仅是云中的Git版本控制器
- 02-21Git常用操作总结_git基本用法
- 02-21为什么互联网巨头使用Git而放弃SVN?(含核心命令与原理)
- 02-21Git 高级用法,喜欢就拿去用_git基本用法
- 02-21Git常用命令和Git团队使用规范指南
- 02-21总结几个常用的Git命令的使用方法
- 02-21Git工作原理和常用指令_git原理详解
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)