• JAVA-初步认识-第六章-二维数组-定义方式内存图解2


     一.

    上一节,主要讨论的是二维数组在堆内存中如何分布的问题。

    new int[3][2]这个语句明确了二维数组长度的同时,也明确了一维数组的长度。还有另外一中定义方式,new int[3][],明确了二维数组的长度,但是没有明确一维数组的长度。这就意味着没有要求说,一定要每一个一维数组的空间都是一样大的。

    那么这样的定义方式,该怎么画其在内存中的分布呢?

    在内存中画图一步步来。二维数组创建完毕后,就是赋值(赋值就是指向)。

     

    接着执行第二句话,(右边运算完,才能把值赋给左边)。先是新建一维数组实体,然后赋值。

    最终的结果如下

    那么System.out.print(arr);打印的情况是怎样的?

    如果直接打印一个引用型的变量,输出语句里面是记录数据,然后把数据放到控制台上。输出语句往外打印的全部都是字符串,

    前面用输出语句直接输出arr,得到的是[ I@1fb8ee3值,它并不是输出数组中哪一个角标的值。哈希值,实体在内存中存储的位置,也可以理解为地址值。现在讨论二维数组。

     

    下图接着变了一种情况,判断输出是怎样的。DOS在运行的时候,编译没有报错,运行出错了。由于没有确定一维数组,那么二维数组的初始化值都是空,也不存在后面有一个赋值什么的。拿一个空去操作数组角标里的元素,不太合适。凡是拿着引用型变量,没有任何实体指向,去操作实体,都会有这个结果

     

  • 相关阅读:
    自考毕业答辩总结
    【项目经验】navicat工具 SQLServer数据库迁移MySQL
    【项目经验】EasyUI Tree
    Django框架基础(一)
    前端相关内容补充
    web框架前戏---web框架的本质
    web框架前戏---基础简介及Django安装配置
    sqlAchemy前戏
    mysql基础(五)之pymysql
    mysql基础(四)之索引
  • 原文地址:https://www.cnblogs.com/wsw-bk/p/7644410.html
Copyright © 2020-2023  润新知