数组深入:数组与内存控制
2015-11-23 01:00
441 查看
面试时你是否被问到这样一些问题:
在java中,声明一个数组的过程中,是如何分配内存的?
java中数组的初始化有哪几种方式?
基本数据类型数组和引用类型数组之间有什么区别,在初始化时的内存分配机制有什么区别吗?
动态初始化:初始化时程序员只指定数据的长度,由系统为数组元素分配处世之
数组元素是byte,short,int,long,则数据元素的值默认为0,
数组元素是float,double,则数据元素的值默认为0.0,数组元素是char,则数据元素的值默认为\u0000,
数组元素是boolean,则数据元素的值默认为flase,
数组元素是引用类型,则数据元素的值默认为null
注:1.不要同时使用静态初始化和动态初始化。即不要在数组进行初始化时,既指定数组长度,又为每个数组元素分配初始值。
2.java数组变了数组变量是一种引用类型的变量,数组变量不是数组对象本身,他储存在栈内存中,只是指向(引用)堆内存中的数组对象
3.java数组是静态的,一旦初始化成功,数组元素的内存空间分配即结束,程序只能改变数组对象元素的值,而不能改变数组的长度。
在java中,声明一个数组的过程中,是如何分配内存的?
java中数组的初始化有哪几种方式?
基本数据类型数组和引用类型数组之间有什么区别,在初始化时的内存分配机制有什么区别吗?
1.1 数组的初始化:
1.11 java语言是典型的静态语言,因此java的数组是静态的,即当数组被初始化之后,该数组的长度是不可变的。java数组经过初始化之后才可使用。所谓初始化,就是为数组对象的元素分配内存空间,并为每个数据元素指定初始值。
静态初始化:初始化时由程序员指定每个数据元素的初始值,由系统决定数组长度。动态初始化:初始化时程序员只指定数据的长度,由系统为数组元素分配处世之
数组元素是byte,short,int,long,则数据元素的值默认为0,
数组元素是float,double,则数据元素的值默认为0.0,数组元素是char,则数据元素的值默认为\u0000,
数组元素是boolean,则数据元素的值默认为flase,
数组元素是引用类型,则数据元素的值默认为null
//静态初始化 String[] names={"liu","zhang","zhou","wu"}; //动态初始化 String[] str=new String[5];
注:1.不要同时使用静态初始化和动态初始化。即不要在数组进行初始化时,既指定数组长度,又为每个数组元素分配初始值。
2.java数组变了数组变量是一种引用类型的变量,数组变量不是数组对象本身,他储存在栈内存中,只是指向(引用)堆内存中的数组对象
3.java数组是静态的,一旦初始化成功,数组元素的内存空间分配即结束,程序只能改变数组对象元素的值,而不能改变数组的长度。
1.12 数组一定要初始化吗?
始终记住:java的数组变量是引用类型的变量,他并不是数组对象本身,只是让数组指向有效的数组对象。它们都不需要经过所谓的初始化,需要进行初始化的是该引用变量所引用的对象。1.1.3 基本类型数组的初始化
对基本类型数组而言,数组元素的值直接储存在对应的数组元素中,因为基本数据类型的初始化比较简单,程序直接为数组元素分配内存空间,再将数组元素的值存入相应的内存中。String[] names; names=new String[]{"liu","zhang","zhou","wu"};静态初始化后,系统会根据程序员指定的数组元素来决定数组的长度。一旦该数组创建成功,该数组的长度则不会改变。
1.1.4 引用类型数组的初始化
引用数组类型的数组元素依然是引用类型的,因此数组元素里存储的还是引用,他指向另一块内存,这块内存里储存里该引用变量所引用的对象(数组或java对象)1.2 使用数组
当数组引用变量指向一个有效的数组对象之后,程序就可以通过该数组引用变量来访问数组对象。java语言不允许直接访问堆内存中的数据,因此无法直接访问堆内存中的数组对象,程序将通过数组引用变量来访问数组。1.2.1 数组元素是变量
当程序需要多个类型相同的变量来保存程序状态时,可以考虑使用数组来保存这些变量。当一个数组初始化完成后,就相当于叮一口多个类型相同的变量。1.2.2 没有多维数组
多维数组都可以当成一位数组来处理。相关文章推荐
- 只有程序员看的懂的面试圣经|如何拿下编程面试
- 下一次技术面试时要问的 3 个重要问题
- IE7降低内存和降低CPU的几个技巧
- 如何高效的使用内存
- DOS下内存的配置
- XP/win2003下发现1G的内存比512M还慢的解决方法
- PHP程序员面试 切忌急功近利(更需要注重以后的发展)
- PowerShell实现动态获取当前脚本运行时消耗的内存
- C#实现把dgv里的数据完整的复制到一张内存表的方法
- SQL语句实现查询SQL Server内存使用状况
- C语言内存对齐实例详解
- 深入学习C语言中memset()函数的用法
- 全局变量与局部变量在内存中的区别详细解析
- VB读取线程、句柄及写入内存的API代码实例
- php运行提示:Fatal error Allowed memory size内存不足的解决方法
- C#常见算法面试题小结
- IE浏览器IFrame对象内存不释放问题解决方法
- C#之CLR内存深入分析
- JavaScript 变量、作用域及内存
- JavaScript避免内存泄露及内存管理技巧