Contens
前言(转载请说明作者!)3.11编写
如果你之前接触过C语言,相信你对数组并不陌生,然而在Java SE编程中,数组的定义与赋值都发生了一些变化,因为Java是面向对象的编程语言,在数组的定义中也不例外。
在本博客中,将会讲述:
1.如何在Java中声明和创建(一维或多维)数组
2.数组的初始化和遍历
3.Java中内存的分配情况
4.理解对象数组的声明和创建
5.Arrays类常用方法的使用
任务导引:评分程序
题目
假如有十个评委为参赛选手打分(分数1~100)。
最后得分为:去掉最高和最低的两个,其余的八个分数取平均。
分析
如果同时要存放很多个数据,很明显一个个定义变量是不合适的,那么在内存中开辟一块连续的存储空间是非常有必要的,学过C语言的应该明白它叫数组。
数组里面每一个元素都是同类型的,每一个元素都是有下标的,下标从0开始。
数组
数组的声明
声明就要告诉计算机这个数组数据类型是什么。
语法
- 数据类型[ ] 数组名;
e.g. int[] studentsScore; - 数据类型 数组名[ ];
e.g. int studentsScore[];
数组的创建
声明数组只是得到了一个存放数组的变量,但是并没有为数组的元素分配内存空间,所以当前数组害不可使用。
Java中,用new来创建内存空间以存放数组中的元素。
语法
- 数组名 = new 数据类型[数组长度];
e.g. studentsScore = new int[21];
即为数组名为studentsScore的数组分配21个int单位的内存空间。
也可以使用声明数组与分配空间结合的方式创建数组
即:数据类型[] 数组名 = new 数据类型[数组长度];
e.g. int[] studentsScore = new int[21];
一维数组的内存分析
声明一个存放5个整数的数组并创建数组,输出数组中每个元素的值。
int[ ] num;
JVM将会在栈内存中分配出一块内存空间来存放num变量的值,即:
(此处为栈内存中存放的num变量) |
---|
很明显一块内存空间是不可以存放五个数字的。 |
num = new int[5];
new出来的东西都是分配在堆内存中的
此时内存的分布情况:
num变量里面到底有什么东西使得我们可以通过它来访问堆内存中开辟的连续空间的内存呢?
ArrayPrintDemo.java程序实现
public class ArrayPrintDemo {
public static void main(String[] args) {
int[] num;//声明数组num
num = new int[5];//创建数组
System.out.printIn("num="+num);//输出数组名
}
}
运行后的结果为JVM给堆内存那片存储空间分配的首地址。
我们也知道,数组中存放数据在内存中是连续的,这样有了首个元素的地址,就可以很轻松的访问接下来的各个元素了。
数组的遍历
元素的访问
语法
- 数组名[元素下标]
e.g. point = studentsScore[5];