Java中数组表示1(一维数组的定义、初始化和内存中数组的表示)
来源:互联网 发布:江西丰城网络问政 编辑:程序博客网 时间:2024/05/23 13:55
各个语言中都有数组,但Java中是有区别的,Java中只有一维数组,没有多维数组,多维数组使用数组的数组来表示的。所以下面介绍的数组主要以一维数组来表示。
1.数组的定义
数组类型也是一种类型,本身是一种引用类型,例如int是一个基本数据类型,但是int[]就是一种引用数据类型。其定义方式有两种,分别为:
- 类型 数组名[]; 如:String arrayName1[]; int arrayName2[];
- 类型[] 数组名; 如:String[] arrayName1; int[] arrayName2;
推荐使用第二种声明方式,因为第二种声明方式具有更好的可读性,对于int[] arrayName方式,很容易可以理解成:定义一个变量arrayName,类型为int[]。
2.数组的初始化
Java在数组声明时并不为数组分配存储空间(不同于其它高级语言),仅有数组声明,而未分配存储空间。Java语言中数组必须先初始化,然后才可以使用。初始化包括数组的内存分配和对数组元素赋初始值。
Java数组的初始化分为两种方式:
- 静态初始化:数组定义与数组元素的空间分配和赋值操作同时进行。
- 动态初始化:数组定义与数组元素的空间分配和赋值操作分开进行。
2.1 静态初始化
数组初始化是指在声明数组的同时指定数组元素的初始值。
语法格式如下:arrayName = new type[] {element1, element2, …};
例如:
int[] intArray = new int[]{1, 2, 3, 4, 5};double[] decArray = new double[]{1.1, 2.2, 3.3};String[] strArray = new String[]{"Java", "Android", "FORTRAN"};
静态初始化还有一种简化的数据形式(比上面的方式用的更广泛):
int[] intArray = {1, 2, 3, 4, 5};double[] decArray = {1.1, 2.2, 3.3};String[] strArray = {"Java","Android","FORTRAN"};注意:如下几种数组初始化方式是不允许的:
int[] intArray = new int[5]{1, 2, 3, 4, 5}; //错误int[5] intArray = new int[]{1, 2, 3, 4, 5}; //错误int[5] intArray = {1, 2, 3, 4, 5}; //错误数组的长度由程序自动计算,不需要我们手动写。
2.2 动态初始化
为已声明数组(类型 数组名[ ])动态分配空间的一般形式如下:arrayName = new type[arrayLength];
注:数组大小也称为数组的长度,可以为整型常量或变量。
例如:
int[] value1;value1=new int[10];int[] value2=new int[10]; //声明数组的同时,用new运算符为数组分配空间// int[10] value3 = new int[10]; //错误
2.3 一维数组的访问
一维数组的访问语法如下:
语法:数组[下标] 下标是从0开始的。
int[ ] a = new int[4];a[0] = 20; //访问数组元素并赋值a[1] = a[0] + 10;其示意图如下:
注意:访问其他元素会产生数组越界错误,会出现异常:ArrayIndexOutOfBoundsException,如访问a[4]。
3.数组的内存表示
为数组分配空间有两种方法:数组初始化和使用new运算符;为数组分配空间后,数组变量指向数组存储空间的引用地址。其内存分配的过程如下:
首先,在int i这句话运行完后,在栈(Stack)空间中新建了一个int类型的空间,名称为i,如下:
其次,运行完int[] a这句话之后,只是在占空间中定义了一个int[] 类型的数组,名称为a,如下:
在运行完a=new int[4]后,这样才算在堆(Heap)内存中新建了一个长度为4个int类型数组,如下:
在运行完for循环后,数组的值也进行了重新赋值,如下:
全文完。转载请注明出处。
- Java中数组表示1(一维数组的定义、初始化和内存中数组的表示)
- 数组的内存表示
- 一维数组和二维数组的转换表示(C#)
- 数组的定义格式和数组元素的表示方法
- java和c语言中数组定义初始化的区别
- 【JAVA】15、数组中元素的表示方法
- Java~栈的数组表示
- java一维数组和二维数组的定义及其初始化
- 图的数组表示
- 数组的表示javascript
- 多维数组的表示
- 栈的数组表示
- 字符串的数组表示
- 数组的表示
- 数组的指针表示
- java学习总结(16.06.03)java中数组的定义和初始化
- 二叉树的表示(基于一维数组)
- 在c中,指针数组和数组指针的表示和理解
- 这 30 类 CSS 选择器,你必须记在脑袋里!
- MySQL Group Commit理解
- ORACLE PL/SQL编程详解之三:PL/SQL流程控制
- lua中实现switch以及sublime下自动补全switch语法
- java设计模式
- Java中数组表示1(一维数组的定义、初始化和内存中数组的表示)
- 3-2-1 程序控制结构-while循环结构-多次求解一元二次方程?-while循环常见错误?
- google学术不能上的解决方法
- 前端框架你究竟选什么
- 在C#中对ACCESS使用sql语句
- FreeRADIUS 3.0安装配置
- 理解RESTful架构
- LeetCode:Pow(x, n)
- 即将来到: CSS Feature Queries (CSS特性查询)