Java数组及其内存分配
来源:互联网 发布:sap采购订单数据库 编辑:程序博客网 时间:2024/05/15 22:05
转自:http://www.cnblogs.com/xiaoxuetu/
几乎所有的程序设计语言都支持数组。Java也不例外。当我们需要多个类型相同的变量的时候,就考虑定义一个数组。在Java中,数组变量是引用类型的变量,同时因为Java是典型的静态语言,因此它的数组也是静态的,所以想要使用就必须先初始化(为数组对象的元素分配空间)。
1.数组的初始化方式及其内存分配
对于Java数组的初始化,有以下两种方式,这也是面试中经常考到的经典题目:
- 静态初始化:初始化时由程序员显式指定每个数组元素的初始值,由系统决定数组长度,如:
1 //只是指定初始值,并没有指定数组的长度,但是系统为自动决定该数组的长度为42 String[] computers = {"Dell", "Lenovo", "Apple", "Acer"}; //①3 //只是指定初始值,并没有指定数组的长度,但是系统为自动决定该数组的长度为34 String[] names = new String[]{"多啦A梦", "大雄", "静香"}; //②
- 动态初始化:初始化时由程序员显示的指定数组的长度,由系统为数据每个元素分配初始值,如:
1 //只是指定了数组的长度,并没有显示的为数组指定初始值,但是系统会默认给数组数组元素分配初始值为null2 String[] cars = new String[4]; //③
前面提到,因为Java数组变量是引用类型的变量,所以上述几行初始化语句执行后,三个数组在内存中的分配情况如下图所示:
,
由上图可知,静态初始化方式,程序员虽然没有指定数组长度,但是系统已经自动帮我们给分配了,而动态初始化方式,程序员虽然没有显示的指定初始化值,但是因为Java数组是引用类型的变量,所以系统也为每个元素分配了初始化值null,当然不同类型的初始化值也是不一样的,假设是基本类型int类型,那么为系统分配的初始化值也是对应的默认值0。
对于多维数组,假设有这么一段代码:
1 int[][] nums = new int[2][2];
2 nums[0][1] = 2;
那么他在内存中的分配情况如下:
由上图可知,并没有真正的多维数组,它的本质其实是一维数组。
阅读全文
0 0
- Java数组及其内存分配
- Java数组及其内存分配
- Java数组及其内存分配
- Java数组及其内存分配
- Java数组及其内存分配
- Java数组及其内存分配
- java数组内存分配
- Java 数组内存分配方式
- Java虚拟机对象创建及其内存分配
- Java 数组及其内存管理
- java数组及其内存管理
- 由java数组想到java内存分配
- 内存分配及其引用
- 关于Java 数组内存分配一点认识
- Java数组及引用类型内存分配
- Java数组及引用类型内存分配
- java数组的初始化与内存分配
- Java数组及引用类型内存分配
- 解决"taglib definition not consistent with specification version"
- tablayout+底部底部按钮
- 为什么构造函数不能声明为虚函数,析构函数可以
- LeetCode 7 Reverse Integer
- photoshop msvcp120.dll 丢失
- Java数组及其内存分配
- 不用设置路由器就可以让本地电脑当服务器(亲测可用)
- 笔试题
- wpf动态资源和静态资源的区别
- Valid Palindrome II问题及解法
- 16:忽略大小写的字符串比较
- Struts2框架总结
- 日常常用功能-tab切换-原生js和jQuery两种写法,同一思路
- js格式化时间