Java 语言中数组必须先初始化,然后才可以使用。所谓初始化,就是为数组的数组元素分配内存空间,并为每个数组元素赋初始值。
能不能只分配内存空间,不赋初始值呢?
不行,一旦为数组的每个数组元素分配了内存空间,每个内存空间里存储的内容就是该数组元素的值,即使这个内存空间存储的内容为空,这个空也是一个值(null)。不管以哪种方式来初始化数组,只要为数组元素分配了内存空间,数组元素就具有了初始值。初始值的获得有两种形式,一种由系统自动分配,另一种由程序员指定。
type[] arrayName = new int[size];
int[] number = new int[5]; number[0] = 1; number[1] = 2; number[2] = 3; number[3] = 5; number[4] = 8;
如果程序员只指定了数组的长度,那么系统将负责为这些数组元素分配初始值。指定初始值时,系统按如下规则分配初始值。
2)使用 new 指定数组元素的值
使用上述方式初始化数组时,只有在为元素赋值时才确定值。可以不使用上述方式,而是在初始化时就已经确定值。语法如下:
type[] arrayName = new type[]{
值 1,值 2,值 3,值 4,• • •,值 n};
更改例 2 中的代码,使用 new 直接指定数组元素的值。代码如下:
int[] number = new int[]{
1, 2, 3, 5, 8};
编写一个 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]); } }
初始化二维数组
二维数组可以初始化,和一维数组一样,可以通过 3 种方式来指定元素的初始值。这 3 种方式的语法如下:
type[][] arrayName = new type[][]{
值 1,值 2,值 3,…,值 n}; // 在定义时初始化 type[][] arrayName = new type[size1][size2]; // 给定空间,在赋值 type[][] arrayName = new type[size][]; // 数组第二维长度为空,可变化
假设有一个矩阵为 5 行 5 列,该矩阵是由程序随机产生的 10 以内数字排列而成。下面使用二维数组来创建该矩阵,代码如下:
public class Test11 {
public static void main(String[] args) {
// 创建一个二维矩阵 int[][] matrix = new int[5][5]; // 随机分配值 for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
matrix[i][j] = (int) (Math.random() * 10); } } System.out.println("下面是程序生成的矩阵\n"); // 遍历二维矩阵并输出 for (int k = 0; k < matrix.length; k++) {
for (int g = 0; g < matrix[k].length; g++) {
System.out.print(matrix[k][g] + ""); } System.out.println(); } } }
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/176303.html原文链接:https://javaforall.net
