06-01 Java 二维数组格式、二维数组内存图解、二维数组操作

二维数组格式1

一个数组。
<span style="color: #ff0000;"&gt;格式1:
    数据类型[][] 数组名 = new 数据类型[m][n];

    m:表示这个二维数组有多少个一维数组。
    n:表示每<a href="https://www.jb51.cc/tag/yige/" target="_blank" class="keywords">一个</a>一维数组的元素有多少个。</span>

注意:
    A:以下格式也可以表示二维数组
        a:数据类型 数组名[][] = new 数据类型[m][n];
        b:数据类型[] 数组名[] = new 数据类型[m][n];
    B:注意下面定义的区别
        int x;
        int y;
        int x,y;

        int[] x;
        int[] y[];

        int[] x,y[];//这个x是一维数组,y是二维数组

<span style="color: #008000;">*/
<span style="color: #0000ff;">class<span style="color: #000000;"> Array2Demo {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
<span style="color: #ff0000;">//定义一个二维数组
int[][] arr = new int[3][2];
<span style="color: #008000;">//<span style="color: #008000;">定义了一个二维数组arr
<span style="color: #008000;">//<span style="color: #008000;">这个二维数组有3个一维数组的元素
<span style="color: #008000;">//<span style="color: #008000;">每一个一维数组有2个元素
<span style="color: #008000;">//<span style="color: #008000;">输出二维数组名称
System.out.println(arr); <span style="color: #008000;">//<span style="color: #008000;">地址值 [[I@175078b
<span style="color: #008000;">//<span style="color: #008000;">输出二维数组的第一个元素一维数组的名称
System.out.println(arr[0]); <span style="color: #008000;">//<span style="color: #008000;">地址值 [I@42552c
System.out.println(arr[1]); <span style="color: #008000;">//<span style="color: #008000;">地址值 [I@e5bbd6
System.out.println(arr[2]); <span style="color: #008000;">//<span style="color: #008000;">地址值 [I@8ee016
<span style="color: #008000;">//<span style="color: #008000;">输出二维数组的元素
System.out.println(arr[0][0]); <span style="color: #008000;">//<span style="color: #008000;">0
System.out.println(arr[0][1]); <span style="color: #008000;">//<span style="color: #008000;">0
<span style="color: #000000;"> }
}

格式1内存图解:

 

 二维数组格式2

m:表示这个二维数组有多少个一维数组。 列数没有给出,可以动态的给。这一次是<a href="https://www.jb51.cc/tag/yige/" target="_blank" class="keywords">一个</a>变化的列数。

<span style="color: #008000;">*/
<span style="color: #0000ff;">class<span style="color: #000000;"> Array2Demo2 {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
<span style="color: #008000;">//<span style="color: #008000;">定义数组
<span style="color: #0000ff;">int[][] arr = <span style="color: #0000ff;">new <span style="color: #0000ff;">int[3<span style="color: #000000;">][];

    Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.out.println(arr);    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;[[I@175078b</span>
    Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.out.println(arr[0]); <span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;null</span>
    Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.out.println(arr[1]); <span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;null</span>
    Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.out.println(arr[2]); <span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;null

    </span><span style="color: #ff0000;"&gt;//动态的为每<a href="https://www.jb51.cc/tag/yige/" target="_blank" class="keywords">一个</a>一维数组分配空间</span>
    arr[0] = <span style="color: #0000ff;"&gt;new</span> <span style="color: #0000ff;"&gt;int</span>[<span style="color: #ff0000;"&gt;2</span><span style="color: #000000;"&gt;];
    arr[</span>1] = <span style="color: #0000ff;"&gt;new</span> <span style="color: #0000ff;"&gt;int</span>[3<span style="color: #000000;"&gt;];
    arr[</span>2] = <span style="color: #0000ff;"&gt;new</span> <span style="color: #0000ff;"&gt;int</span>[1<span style="color: #000000;"&gt;];

    Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.out.println(arr[</span>0]); <span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;[I@42552c</span>
    Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.out.println(arr[1]); <span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;[I@e5bbd6</span>
    Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.out.println(arr[2]); <span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;[I@8ee016</span>

<span style="color: #000000;">
System.out.println(arr[0][0]); <span style="color: #008000;">//<span style="color: #008000;">0
System.out.println(arr[0][1]); <span style="color: #008000;">//<span style="color: #008000;">0
<span style="color: #ff0000;">//Arrayindexoutofboundsexception
//System.out.println(arr[0][2]); //错误
<span style="color: #000000;">
arr[1][0] = 100<span style="color: #000000;">;
arr[1][2] = 200<span style="color: #000000;">;
}
}

 二维数组格式2  内存图解:

Feed158dc0e0e85e3945db1185.png" alt="">

二维数组格式

    举例:
       <span style="color: #ff0000;"&gt; int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};</span>
        int[][] arr = {{1,5},{6}};

<span style="color: #008000;">*/
<span style="color: #0000ff;">class<span style="color: #000000;"> Array2Demo3 {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
<span style="color: #008000;">//<span style="color: #008000;">定义数组
<span style="color: #0000ff;">int[][] arr = {{1,{6<span style="color: #000000;">}};

    Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.out.println(arr);
    Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.out.println(arr[</span>0<span style="color: #000000;"&gt;]);
    Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.out.println(arr[</span>1<span style="color: #000000;"&gt;]);
    Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.out.println(arr[</span>2<span style="color: #000000;"&gt;]);

    Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.out.println(arr[</span>0][0]); <span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;1</span>
    Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.out.println(arr[1][0]); <span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;4</span>
    Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.out.println(arr[2][0]); <span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;6</span>

<span style="color: #000000;">
System.out.println(arr[0][1]); <span style="color: #008000;">//<span style="color: #008000;">2
System.out.println(arr[1][1]); <span style="color: #008000;">//<span style="color: #008000;">5
<span style="color: #008000;">//<span style="color: #008000;">越界
System.out.println(arr[2][1]); <span style="color: #008000;">//<span style="color: #008000;">错误
<span style="color: #000000;"> }
}

二维数组格式3  内存图解:

 遍历二维数组

外循环控制的是二维数组的长度,其实就是一维数组的个数。 内循环控制的是一维数组的长度。

<span style="color: #008000;">*/
<span style="color: #0000ff;">class<span style="color: #000000;"> Array2Test {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
<span style="color: #008000;">//<span style="color: #008000;">定义一个二维数组
<span style="color: #0000ff;">int[][] arr = {{1,9<span style="color: #000000;">}};

    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;用<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>改进
    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;<a href="https://www.jb51.cc/tag/diaoyong/" target="_blank" class="keywords">调用</a><a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a></span>

<span style="color: #000000;"> printArray2(arr);
}

</span><span style="color: #008000;"&gt;/*</span><span style="color: #008000;"&gt;
    需求:遍历二维数组
    两个明确:
        返回值类型:void
        参数列表:int[][] arr
</span><span style="color: #008000;"&gt;*/</span>
<span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;static</span> <span style="color: #0000ff;"&gt;void</span> printArray2(<span style="color: #0000ff;"&gt;int</span><span style="color: #000000;"&gt;[][] arr) {
    </span><span style="color: #0000ff;"&gt;for</span>(<span style="color: #0000ff;"&gt;int</span> x=0; <span style="color: #ff0000;"&gt;x<arr.length</span>; x++<span style="color: #000000;"&gt;) {
        </span><span style="color: #0000ff;"&gt;for</span>(<span style="color: #0000ff;"&gt;int</span> y=0; y<<span style="color: #ff0000;"&gt;arr[x].length</span>; y++<span style="color: #000000;"&gt;) {
            Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.out.print(arr[x][y]</span>+" "<span style="color: #000000;"&gt;);
        }
        Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.out.println();
    }
}

}

二维数组求和:

统计的数据如下:单位(万元) 第一季度:22,66,44 第二季度:77,33,88 第三季度:25,45,65 第四季度:11,99
分析:
    A:把题目的数据用二维数组来表示
        int[][] arr = {{22,44},{77,88},{25,65},{11,99}};
    B:如何求和呢?
        求和其实就是<a href="https://www.jb51.cc/tag/huoqu/" target="_blank" class="keywords">获取</a>到每<a href="https://www.jb51.cc/tag/yige/" target="_blank" class="keywords">一个</a>元素,然后累加即可。
    C:定义<a href="https://www.jb51.cc/tag/yige/" target="_blank" class="keywords">一个</a>求和变量sum,初始化值是0。
    D:通过遍历就可以得到每<a href="https://www.jb51.cc/tag/yige/" target="_blank" class="keywords">一个</a>二维数组的元素。
    E:把元素累加即可。
    F:最后<a href="https://www.jb51.cc/tag/shuchu/" target="_blank" class="keywords">输出</a>sum,就是结果。

<span style="color: #008000;">*/
<span style="color: #0000ff;">class<span style="color: #000000;"> Array2Test2 {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
<span style="color: #008000;">//<span style="color: #008000;">把题目的数据用二维数组来表示
<span style="color: #0000ff;">int[][] arr = {{22,99<span style="color: #000000;">}};

    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;定义<a href="https://www.jb51.cc/tag/yige/" target="_blank" class="keywords">一个</a>求和变量sum,初始化值是0。</span>
    <span style="color: #0000ff;"&gt;int</span> sum = 0<span style="color: #000000;"&gt;;

    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;通过遍历就可以得到每<a href="https://www.jb51.cc/tag/yige/" target="_blank" class="keywords">一个</a>二维数组的元素。</span>
    <span style="color: #0000ff;"&gt;for</span>(<span style="color: #0000ff;"&gt;int</span> x=0; x<arr.length; x++<span style="color: #000000;"&gt;) {
        </span><span style="color: #0000ff;"&gt;for</span>(<span style="color: #0000ff;"&gt;int</span> y=0; y<arr[x].length; y++<span style="color: #000000;"&gt;) {
            </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;把元素累加即可。</span>
            <span style="color: #ff0000;"&gt;sum +=</span><span style="color: #000000;"&gt;<span style="color: #ff0000;"&gt; arr[x][y];</span>
        }
    }

    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;最后<a href="https://www.jb51.cc/tag/shuchu/" target="_blank" class="keywords">输出</a>sum,就是结果。</span>
    Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.out.println("一年的销售额为:"+sum+"万元"<span style="color: #000000;"&gt;);
}

}

 

二维数组树出杨辉三角:打印杨辉三角形(行数可以键盘录入)

需求:打印杨辉三角形(行数可以<a href="https://www.jb51.cc/tag/jianpan/" target="_blank" class="keywords">键盘</a>录入) 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 分析:看这种图像的规律 A:任何一行的第一列和最后一列都是1 B:从第三行开始,每<a href="https://www.jb51.cc/tag/yige/" target="_blank" class="keywords">一个</a>数据是它上一行的前一列和它上一行的本列之和。 步骤: A:首先定义<a href="https://www.jb51.cc/tag/yige/" target="_blank" class="keywords">一个</a>二维数组。行数如果是n,我们把列数也先定义为n。 这个n的数据来自于<a href="https://www.jb51.cc/tag/jianpan/" target="_blank" class="keywords">键盘</a>录入。 B:给这个二维数组任何一行的第一列和最后一列赋值为1 C:按照规律给其他元素赋值 从第三行开始,每<a href="https://www.jb51.cc/tag/yige/" target="_blank" class="keywords">一个</a>数据是它上一行的前一列和它上一行的本列之和。 D:遍历这个二维数组。

<span style="color: #008000;">*/
<span style="color: #0000ff;">import<span style="color: #000000;"> java.util.Scanner;

<span style="color: #0000ff;">class<span style="color: #000000;"> Array2Test3 {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
<span style="color: #008000;">//<span style="color: #008000;">创建键盘录入对象
Scanner sc = <span style="color: #0000ff;">new<span style="color: #000000;"> Scanner(system.in);

    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;这个n的数据来自于<a href="https://www.jb51.cc/tag/jianpan/" target="_blank" class="keywords">键盘</a>录入。</span>
    Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.out.println("请输入<a href="https://www.jb51.cc/tag/yige/" target="_blank" class="keywords">一个</a>数据:"<span style="color: #000000;"&gt;);
    </span><span style="color: #0000ff;"&gt;int</span> n =<span style="color: #000000;"&gt; sc.nextInt();

    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;定义二维数组</span>
    <span style="color: #0000ff;"&gt;int</span>[][] arr = <span style="color: #0000ff;"&gt;new</span> <span style="color: #0000ff;"&gt;int</span><span style="color: #000000;"&gt;[n][n];

    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;给这个二维数组任何一行的第一列和最后一列赋值为1</span>
    <span style="color: #0000ff;"&gt;for</span>(<span style="color: #0000ff;"&gt;int</span> x=0; x<arr.length; x++<span style="color: #000000;"&gt;) {
        arr[x][</span>0] = 1; <span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;任何一行第1列</span>
        arr[x][x] = 1; <span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;任何一行的最后1列</span>

<span style="color: #000000;"> }

    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;按照规律给其他元素赋值
    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;从第三行开始,每<a href="https://www.jb51.cc/tag/yige/" target="_blank" class="keywords">一个</a>数据是它上一行的前一列和它上一行的本列之和。</span>
    <span style="color: #0000ff;"&gt;for</span>(<span style="color: #0000ff;"&gt;int</span> x=2; x<arr.length; x++<span style="color: #000000;"&gt;) {
        </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;这里如果y<=x是有个小问题的,就是最后一列的问题
        </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;所以这里要减去1
        </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;并且y也应该从1开始,因为第一列也是有值了</span>
        <span style="color: #0000ff;"&gt;for</span>(<span style="color: #0000ff;"&gt;int</span> <span style="color: #ff0000;"&gt;y=1</span>; <span style="color: #ff0000;"&gt;y<=x-1</span>; y++<span style="color: #000000;"&gt;) {
            </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;每<a href="https://www.jb51.cc/tag/yige/" target="_blank" class="keywords">一个</a>数据是它上一行的前一列和它上一行的本列之和。</span>
            <span style="color: #ff0000;"&gt;arr[x][y] = arr[x-1][y-1] + arr[x-1</span><span style="color: #000000;"&gt;<span style="color: #ff0000;"&gt;][y];</span>
        }
    }

    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;这个时候,要注意了,内循环的变化必须和曾经讲过的九九乘法表类似</span>
    <span style="color: #0000ff;"&gt;for</span>(<span style="color: #0000ff;"&gt;int</span> x=0; x<arr.length; x++<span style="color: #000000;"&gt;) {
        </span><span style="color: #0000ff;"&gt;for</span>(<span style="color: #0000ff;"&gt;int</span> y=0;<span style="color: #ff0000;"&gt; y<=x</span>; y++<span style="color: #000000;"&gt;) {
            Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.out.print(arr[x][y]</span>+"\t"<span style="color: #000000;"&gt;);
        }
        Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.out.println();
    }
}

}

 

相关文章

HashMap是Java中最常用的集合类框架,也是Java语言中非常典型...
在EffectiveJava中的第 36条中建议 用 EnumSet 替代位字段,...
介绍 注解是JDK1.5版本开始引入的一个特性,用于对代码进行说...
介绍 LinkedList同时实现了List接口和Deque接口,也就是说它...
介绍 TreeSet和TreeMap在Java里有着相同的实现,前者仅仅是对...
HashMap为什么线程不安全 put的不安全 由于多线程对HashMap进...