【JavaSE】语言基础5

摘要

  • 数组

概述和定义格式

  • A:存储同种数据类型的多个值
  • B:数组概念
    • 存储同一种数据类型多个元素的集合,可以看成容器。
    • 既可以存储基本数据类型,也可以存储引用数据类型。
  • C定义格式(动态初始化)
    • a:数据类型[] 数组名 =new 数据列席[数组长度]

初始化值

  • 整数类型:0
  • 浮点类型:0.0
  • 布尔类型:false
  • 字符类型:char默认'\u0000',char占两个字节,16个二进制位,每个0表示一个16进制的0,四个即表示16个二进制位

注意

  • 直接输出数组会打印数组的地址。如地址[I@19bb45c,其中[的个数即数组维数,I表示int类型,@后面的代表十六进制的地址值。

Java的内存分配以及堆和栈的区别

    • 储存局部变量(定义在方法声明上和方法中的变量)
    • 存储new出来的数组或对象
  • 方法区
    • 代码储存区
  • 本地方法区
    • 和系统相关
  • 寄存器
    • 给CPU使用

例子

int[] arr = new int[3]; 动态初始化,创建三块连续空间。在栈中储存变量arr,堆中储存new出来的3个对象。

多个数组的内存分配

  • 每次新建数组就会在内存的堆和栈中分配空间给新的对象和变量。当利用一个数组定义另一个数组时:

      int[] arr1=new int[3];
      int[] arr2=arr1;
    

arr2和arr1指向的地址相同,改变其中一个数据,另一个会随之改变。

1.png

静态初始化

1. 数据类型[] 数组名 =new 数据类型[] {元素1,元素2,...}
2. 数据类型[] 数组名 ={元素1,元素2,...}
第一种可以先声明后赋值,第二种必须同时声明和赋值。

越界和空指针

  • 访问数组中不存在的索引会出现索引越界异常
  • 若数组变量被重新赋值为null,再调用数组中的元素会出现空指针

传值还是传址

  • Java中只有传值,地址值也是值。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容