java数组的定义初始化关于内存的理解
来源:互联网 发布:基尼系数统计学算法 编辑:程序博客网 时间:2024/05/19 06:37
壹:
对于数组的定义有以下的两种方式:
<1> type[] var = null;
<2>type var[] = null;
package base;public class ArrayDefinition { public static void main(String args[]){ int [] var = null;//这种比较常用相比下面的那一种 int var2[] = null;//编译已经通过了,只是会出现警告(定义了一个空指针) }}
贰:
然而对于数组的初始化,可以分为两种即为静态初始化和动态初始化(有的地方说是还有一种“隐士初始化”,但我个人认为两种就可以啦)
<1>静态初始化:所谓静态初始化是指的在定义数组的时候就为数组元素分配空间并赋值
<2>动态初始化:数组的定义,数组的空间分配,还有数组元素赋值分开操作
(补:<3>隐士初始化即按照数组的成员变量规则,给其赋值(堆内存都有初始值)。。。规则如下
1、int ,byte ,short ,long 0
2、float ,double 0.0
3、boolean false
4、char \u0000
5、引用类型的如数组,类,接口 null )
package base;public class ArrayDefinition { public static void main(String args[]){ int [] var = null; int var2[] = null; var = new int[5]; var2 = new int[]{1,4,5}; for(int i = 0;i<var.length;i++){ System.out.print(var[i]+" "); } System.out.println(); for(int i = 0;i < var2.length;i++){ System.out.print(var2[i] + " "); } }}/*运行结果:
0 0 0 0 0
1 4 5
*/
叁:
在这里重点讲一下注意事项:
<1>再定义数组的时候不能声明指出数组的大小。因为数组的定义只是单单的定义一个指针只是栈里面的一个变量,并没有指向什么地址,像以上代码指的就是null
<2>运行的时候才进行的创建的过程(堆里面),只有运行的时候才会创建实体所以以下的代码编译的时候不会出错
var2 = new int[]{1,4,5};
System.out.println(var2[3]);//编译的时候没有问题。运行的时候才会报错<3>静态初始化与动态初始化不能同时进行,通俗点就是不能既规定了数组的长度又给每个数组元素赋了值
在网上经常有网友会问为什么或者静态与动态初始化的区别,其实是个定义理解的
静态是:
已经存放了自己知道的且不改变的数据
动态是:
声明时候只是给数组分配了内存大小空间,空间里除了初始值什么也没有,实际放什么值是要由后面的程序来指定的,因为一开始放什么,我们也许也并不清楚
肆:
综上有以下三种数组对于定义初始化:
<1>type[] arr = new type[length]
<2>type[] arr = new type[]{object1,object2,object3...................}
<3>type[] arr = {object1,object2,object3...................}
- java数组的定义初始化关于内存的理解
- 深入理解数组的定义和初始化
- C++关于声明、定义、初始化的理解
- 关于Java数组的初始化
- 关于java数组的初始化
- 关于java数组的初始化
- Java day03 数组的定义和初始化
- Java数组类型的定义和初始化
- 关于数组的复习以及定义一个类(关于内存的理解)
- 关于循环、数组定义的理解
- Java中数组表示1(一维数组的定义、初始化和内存中数组的表示)
- java数组的初始化与内存分配
- 关于java内存的理解
- java数组的定义和内存分配
- 关于初始化的理解
- 数组的定义和初始化
- 【读书笔记】数组的定义、初始化
- 数组的定义与初始化
- CodeForces
- 算法学习——并查集
- LeetCode 53. Maximum Subarray
- ffmpeg 使用笔记(一)
- 顶部和底部固定中间自适应的布局
- java数组的定义初始化关于内存的理解
- QT打包.exe可执行程序
- mysql 远程登入设置
- ssm--基础查询
- java基础学习总结——网络编程
- document.ready和window.onload的区别
- thinkphp5.07 资源管理预览+图片裁切
- 刚来的一位.Net架构师搭建的插件框架!
- 防火墙——NAT与iptables