------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
1.数组:
1.1数组的定义
概念:
同一种类型数据的集合,其实数组就是一个容器
数组的好处:
可以自动给数组中的元素从0开始编号,方便操作这些元素
格式1:
元素类型[] 数组名=new 元素类型[元素个数或数组长度]
格式2:
元素类型[] 数组名=new 元素类型[]{元素,元素,……};
int[]arr = new int[4];
int[]arr = new int[]{3,5,1,7};
int[]arr = {3,5,1,7};
1.2数组的内存分配及特点
Java程序在运行时,需要在内存中分配空间.为了提供运算效率,对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式
栈内存:
用于存储局部变量,当数据使用完,所占空间会自动释放
注:只要定义的局部变量,都是在栈内存中开辟内存空间
局部变量:
1. 定义在方法中的变量,
2. 定义在方法中参数列表中的变量,
3. 定义在for循环中的变量
堆内存:
数组和对象,通过new建立的实例都存放在堆内存中
每一个实体都有内存地址值
实体中的变量都有默认初始化值
当实体不再被使用时,会在不确定的时间内被垃圾回收器回收
int[] x=new int[3]; //new了之后会在对内存中开辟空间,会把首地址赋给x
讯享网
数组一被定义都会赋初值
堆内存中的实体都是封装数据的,每个实体都有默认初始化值
讯享网int[] x=new int[3];
当x=null 的时候,就会把栈内存和对内存之间的桥梁断开,也就是null会把堆内存中开辟的空间数组的首地址覆盖掉
这时jvm的垃圾回收机制会把垃圾不定时的回收掉
当一个实体类为null时,不会在堆内存中开辟内存空间
当new的时候,会在堆内存中开辟内存空间注:
栈内存会自动释放
堆内存会通过垃圾回收机制不定时释放
例:两个引用指向同一个对象
int[] x=new int[3]; int[] y=x; y[0]=89; x[0]=77; x=null; System.out.println(y[0]);
注意:数组静态初始化
讯享网 int[] x=new int[]{1,2,3,4,5}; int[] x={1,2,3,4,5};//与上面的完全等价,也会在堆内存中开辟空间
常见错误:
int[] x=new int[3]; System.out.println(x[3]);//在编译时不会报错,因为编译只会检查语法错误,运行时才会开辟堆内存空间
打印数组变量的结果:
方法区:
这里包括(类:字节码文件对象、静态区、常量池)
1.3数组操作常见问题
空指针:NullPointerException
数组溢出:ArrayIndexOutOfBoundsException

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/120985.html