說明 使用 VLD 記憶體泄漏檢測工具輔助開發時整理的學習筆記。本篇介紹如何在 Release 模式下使用 VLD。同系列文章目錄可見 《記憶體泄漏檢測工具》目錄 1. 思路概述 要在 RELEASE 模式下使用 VLD,必須在包含頭文件 vld.h 前預先定義 VLD_FORCE_ENABLE 巨集(參 ...
基本概念
在Java中二維數組被看作數組的數組,即二維數組為一個特殊的一維數組,其每個元素又是一個一維數組。
Java 並不直接支持二維數組,但是允許定義數組元素是一維數組的一維數組,以達到同樣的效果。
創建及初始化
// 創建方式和數組相似 第一個中括弧表示行,第二個中括弧表示列
// 表示創建了擁有3個子數組且每個子數組都有兩個元素的二維數組
int[][] arrarr1 = new int[3][2];
// 表示創建了擁有3個子數組, 但子數組全部為null 的二維數組
int[][] arrarr2 = new int[3][];
// 靜態初始化, 創建二維數組併進行賦值操作
int[][] arrarr3 = new int[][]{{1,23},{23,56,1},{1,4,7}};
int[][] arrarr4 = {{1,23},{23,56,1},{1,4,7}};
// 特殊寫法!!!
int[] x, y[]; // 此處 x是一維數組, y是二維數組
元素的獲取
// 獲取單個元素
System.out.println(arrarr3[1][2]);
// 1
// 查看arrarr2數組的元素
for (int[] arr : arrarr2) {
System.out.println(arr);
}
/*
獲取到arrarr2中數組的地址值
null
null
null
*/
for (int[] arr: arrarr3) {
for (int a: arr) {
System.out.print(a + " ");
}
System.out.println();
}
/*
1 23
23 56 1
1 4 7
*/
為子數組賦值
arrarr2[0] = new int[2];
arrarr2[1] = new int[4];
arrarr2[2] = new int[1];
for (int[] arr : arrarr2) {
for (int tmp : arr) {
System.out.print(tmp + "\t");
}
System.out.println();
}
/*
0 0
0 0 0 0
0
*/
練習
二維數組列印一個10行的楊輝三角
/*
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
...
第一行一個元素, 第n行有n個元素
每行的第一個元素和第二個元素都是1
從第三行開始 對於非第一個和最後一個元素的元素:
*/
yanghui[i][j] = yanghui[i - 1][j - 1] + yanghui[i - 1][j];
int[][] yangHui = new int[10][];
for (int i = 0; i < 10; i++) {
yangHui[i] = new int[i + 1];
for (int j = 0; j < yangHui[i].length; j++) {
if (j == 0 || j == yangHui[i].length - 1) {
yangHui[i][j] = 1;
} else {
yangHui[i][j] = yangHui[i - 1][j - 1] + yangHui[i - 1][j];
}
}
}
for (int i = 0; i < yangHui.length; i++) {
for (int j = 0; j < yangHui[i].length; j++) {
System.out.print(yangHui[i][j] + "\t");
}
System.out.println();
}
假設有一個矩陣為5行5列,該矩陣是由程式隨機產生的100以內數字排列而成。下麵使用二維數組來創建該矩陣,代碼如下:
public class Test{
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() * 100);
}
}
for(int i = 0; i < matrix.length; i++) {
for(int j = 0; j < matrix[i].length; j++) {
System.out.print(matrix[i][j] + "\t");
}
System.out.println();
}
}
}