0
点赞
收藏
分享

微信扫一扫

J2 (数组)

慎壹 2022-05-06 阅读 27
java
  • 定义
    • 数组变量名中存储的是数组在内存中的地址,数组是引用类型
  • 初始化
    • 静态初始化:定义时赋值
      • 数据类型【】 数组名={元素1,元素2.。。。}
      • 数据类型【】 数组名=new 数据类型【】{元素1,元素2.。。。}
      • 数据类型 数组名【】={ };
    • 动态初始化:只确定元素类型和数组长度,之后再存入具体数据
      • 数据类型【】 数组名=new 数据类型【长度】;
      • 有默认值
    • 元素默认值
      • 整型 :0
      • 浮点型 :0.0
      • bool :false
      • 引用类型(类,接口,数组,string): null
      • 字符数组的默认值为编号0
    • 数组一旦定义,在程序执行过程中,长度、类型就固定了
    • 两种格式写法独立,不可混用
      • int 【】arrs=new int【3】{30,40,50};(×)
  • 访问数组长度
    • 数组名.length
  • 与c++区别

    • JAVA里数组的内存分配是在里面的,必须用new来分配
      • 数组名在堆区,存储所指向的堆区对象的首地址,不在数组中
      • 传值时属于引用传值
    • C++里面数组(静态)是在里面分配的,定义的时候会自动分配。

      • 数组名为数组的首地址,在数组中
    • java
      • 1.数组不是集合,它只能保存同种类型的多个原始类型或者对象的引用。
        • 数组保存的仅仅是对象的引用,而不是对象本身
        • int[] arr,一个int数组对象
      • 2.Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的
      • 3.在数组声明中包含数组长度永远是不合法的,声明的时候并没有实例化任何对象
        • 只有在实例化数组对象时,JVM才分配空间,这时才与长度有关
      • 4.数组构造的时候必须指定长度
      • 5.下标检查不是在编译时刻进行的,而是在运行时!
    • C++中的数组就是内存块。如果一个程序要访问其自身内存块之外的数组,或者在数组初始化之前使用它,都会产生难以预料的后果。
    • java的主要目标之一就是安全性。java确保数组会被初始化,而且不能在它的范围之外被访问。这种范围检查,是以每个数组上少量的内存开销以及运行时的下标检查为代价的。
    • java可以用类做数组成员
举报

相关推荐

0 条评论