Java千百问_06数据结构(017)_什么是二维数组

1、二维数组如何定义

Java语言中,多维数组被看作数组的数组。 
了解一维数组看这里:java中的数组是什么 
定义方式和一维数组类似,如下:

type arrayName[ ][ ];
type [ ][ ]arrayName;

2、二维数组如何初始化

二维数组初始化和一维数组一样,分为静态初始化和动态初始化

静态初始化 
Java语言中,由于把二维数组看作是数组的数组,数组空间不是连续分配的,所以不要求二维数组每一维的大小相同。初始化方式如下:

int intArray[ ][ ]={{1,2},{2,3},{3,4,5}};

动态初始化 
二维数组可以直接为每一维分配空间,如下:

arrayName = new type[arrayLength1][arrayLength2];
int a[ ][ ] = new int[2][3];

也可以从最高维开始,分别为每一维分配空间,如下:

arrayName = new type[arrayLength1][ ];
arrayName[0] = new type[arrayLength20];
arrayName[1] = new type[arrayLength21];
…
arrayName[arrayLength1-1] = new type[arrayLength2n];

例如:

int a[ ][ ] = new int[2][ ];
a[0] = new int[3];
a[1] = new int[5];

特别的,对二维引用类型的数组,必须首先为最高维分配引用空间,然后再顺次为低维分配空间。而且,必须为每个数组元素单独分配空间。

例如:

String s[ ][ ] = new String[2][ ];
s[0]= new String[2];//为最高维分配引用空间
s[1]= new String[2]; //为最高维分配引用空间
s[0][0]= new String("Good");// 为每个数组元素单独分配空间
s[0][1]= new String("Luck");// 为每个数组元素单独分配空间
s[1][0]= new String("to");// 为每个数组元素单独分配空间
s[1][1]= new String("You");// 为每个数组元素单独分配空间

3、如何获取二维数组的元素

对二维数组中的每个元素,引用方式为:

arrayName[index1][index2]

例如:

num[1][0];

4、二维数组如何使用:

二维数组在数学中,可以认为是一个矩阵,我们来看一个两个矩阵相乘的例子:

public
class MatrixMultiply{
public static void main(String args[]){
   int i, j, k;

        int a[][] = new int[2][3]; // 动态初始化一个二维数组
        int b[][] = { { 1, 5, 2, 8 }, { 5, 9, 10, -3 }, { 2, 7, -5, -18 } };// 静态初始化一个二维数组
        int c[][] = new int[2][4]; // 动态初始化一个二维数组
        for (i = 0; i < 2; i++)
            for (j = 0; j < 3; j++)
                a[i][j] = (i + 1) * (j + 2);
        for (i = 0; i < 2; i++) {
            for (j = 0; j < 4; j++) {
                c[i][j] = 0;
                for (k = 0; k < 3; k++)
                    c[i][j] += a[i][k] * b[k][j];
            }
        }
        System.out.println("******* A********");
        for (int[] aa : a) {
            String rowStr = "";
            for (int aaa : aa) {
                rowStr += aaa + "  ";
            }
            System.out.println(rowStr);
        }
        System.out.println("******* B********");
        for (int[] bb : b) {
            String rowStr = "";
            for (int bbb : bb) {
                rowStr += bbb + " ";
            }
            System.out.println(rowStr);
        }
        System.out.println("*******Matrix C********");
        for (i = 0; i < 2; i++) {
            String rowStr = "";
            for (j = 0; j < 4; j++) {
                rowStr += c[i][j] + " ";
            }
            System.out.println(rowStr);
        }
}
} 

执行结果如下:

* A******** 
2 3 4 
4 6 8 
* B******** 
1 5 2 8 
5 9 10 -3 
2 7 -5 -18 
**Matrix C*** 
25 65 14 -65 
50 130 28 -130

时间: 2024-12-25 00:03:16

Java千百问_06数据结构(017)_什么是二维数组的相关文章

Java千百问_06数据结构(011)_java中的数组是什么

1.什么是数组 Java提供了一个用于存储相同类型的元素的,固定大小的连续集合数据结构:数组. 数组是用于存储数据的集合,储存相同类型数据的集合. 与单个变量相比(如number0, number1 - number99),数组变量需要使用下标索引来确定数组中某个数据的顺序(如numbers[0], numbers1 - numbers[99] ).  了解变量看这里:局部变量.类变量.实例变量有什么区别2 2.如何声明数组 一个程序要使用数组,必须声明一个变量来引用数组,而且需要指定数组变量的

Java千百问_06数据结构(018)_多维数组如何储存在内存中

1.多维数组如何储存在内存中 了解一维数组如何储存看这里:java数组如何存储在内存中 从底层来看,数组元素可以存放引用类型,数组也是引用类型的一种.也就是说,在数组元素的内部还可以包含数组(如int[][] numbers = new int[length][]),即二维数组可当作一维数组(数组长度为length)来处理. 了解数组和普通引用对象在内存中的区别看这里:数组和普通对象的引用变量有什么区别 由此我们得出结论: 任何多维数组(维度为n,n>1)都可以当作一维数组,其数组元素为n-1维

Java千百问_06数据结构(015)_数组和普通对象的引用变量有什么区别

1.数组和普通对象的引用变量有什么区别 了解什么是数组看这里:java中的数组是什么  对于Java的数组来说,只有类型兼容(即属于同一数据类型体系且遵守优先级由低到高原则),才能将数组引用传递给另一数组引用,但仍然不能改变数组长度(仅仅只是调整数组引用指针的指向).  了解数组传递看这里:数组如何传递 public class TestArrayLength { public static void main(String[] args) { int[] numbers = { 3, 5, 1

Java千百问_06数据结构(003)_什么是基本类型包装器

1.什么是包装器 包装器也叫包装类,继承于Object,可以当作8种基本数据类型的类映射,包装器可以直接转换为基本数据类型(成为拆箱).如下:  了解8种基本数据类型看这里:java有哪8种基本数据类型 2.包装器有什么作用 包装器描述了基本数据类型的若干属性,包括基本类型的取值范围以及长度等.  例子: public class PrimitiveTypeTest { public static void main(String[] args) { // byte System.out.pri

Java千百问_06数据结构(016)_引用类型数组在内存中如何储存

1.存放基本类型数组在内存中如何储存 Java的数组中可以存放引用类型.  存放引用类型的内存分布相比存放基本类型相对复杂.来看一段存储基本类型的程序:  了解什么是数组看这里:java中的数组是什么  了解数组在内存中的储存看这里:java数组如何存储在内存中 public class TestPrimitiveArray { public static void main(String[] args) { //1.定义数组 int[] numbers; //2.分配内存空间 numbers

Java千百问_06数据结构(014)_java数组如何存储在内存中

1.数组的内存空间是何时分配的 Java中的数组是用来存储同一种数据类型的数据结构,一旦初始化完成,即所占的空间就已固定下来,初始化的过程就是分配对应内存空间的过程.即使某个元素被清空,但其所在空间仍然保留,因此数组长度将不能被改变.  了解什么是数组看这里:java中的数组是什么  当仅定义一个数组变量(int[] numbers)时,该变量还未指向任何有效的内存,因此不能指定数组的长度,只有对数组进行初始化(为数组元素分配内存空间)后才可以使用.  数组初始化分为静态初始化(在定义时就指定数

[置顶] Java千百问_06数据结构(001)_java中数据类型是什么

1.什么是数据类型 Java语言是静态类型的(statical typed),也就是说所有变量和表达式的类型再编译时就已经完全确定.由于是statical typed,导致Java语言也是强类型(Strong typed)的.  强类型意味着每个变量都具有一种类型,并且每种类型都是严格定义的(当然泛型比较特殊,看这里:泛型是什么),类型限制了变量可以赋哪些值,表达式最终产生什么值.同时限制了这些值可以进行的操作类型以及具体方法.所有的赋值操作,无论是显式的还是在方法调用中通过参数传递,都要进行类

Java千百问_06数据结构(008)_null属于哪种数据类型

1.null属于哪种数据类型 首先,在Java中,null本身不是对象,也不是Objcet的实例.那么他属于哪种数据类型呢?  了解数据类型看这里:java中数据类型是什么  java基本数据类型看这里:[java有哪8种基本数据类型3  具体看下面这个例子: if (null instanceof java.lang.Object) { System.out.println("null属于java.lang.Object类型"); } else { System.out.printl

Java千百问_06数据结构(019)_Arrays类有什么功能

1.Arrays类有什么功能 Java.util.Arrays中的类包含了很多静态方法,用于排序数组.搜索数组.比较数组和填充数组元素等功能. 了解一维数组看这里:java中的数组是什么 常见方法如下: public static int binarySearch(Object[] a, Object key)  使用二分法搜索数组中指定值的位置(下标).如果数组类型非基本数据类型,则需要类实现Comparable接口中的compareTo方法. public static boolean eq