java:浅谈数组与对象的内存控制
来源:互联网 发布:java权限管理设计rbac 编辑:程序博客网 时间:2024/04/28 18:19
数组与内存控制:
数组的初始化:
大家都知道java中的数组是静态的,必须经过初始化才可以使用,经过初始化之后,数组的长度便是不可以修改。
所谓初始化,就是为数组对象的每个元素分配内存空间,并指定相应的初始值。数组的初始化有两种方式。
静态初始化:由程序员显示指定每个数组元素的初始值,由系统决定数组的长度。
例子:
String[] book1 = new String[]
{
"疯狂java讲义",
"疯狂ajax讲义",
"疯狂XML讲义"
};
动态初始化: 由程序员显示指定数组的长度,由系统为数组元素分配初始值。
String[] book2 = new String[4];
由java的内存分配机制我们知道:
所有的局部变量都是存储在栈中的,不管是基本类型变量还是引用型的变量,只是引用类型的变量引用的对象放在堆中。所以,上面两个数组变量其在内存的分配如下:
在初始化数组之后,不管你是用什么方式初始化的,数组的长度就被确定下来了。
然而,我们可以通过:
Book2 = Book1;
System.out.println( book2.length );
却看到book2的长度变成了3. 这只是一种假象,这只是因为book2所引用的对象变成了book1引用的对象了,然而book2之前引用的数组对象的长度并没有改变。
那么数组变量一定要初始化么?
答案是否定的,
String[] book3;
Book3 = book2;
上面的book3 数组变量就没有初始化,而是通过一个数组变量赋值,来使book3指向内存中的一个数组对象。
其实,数组的初始化,并非是初始化数组变量,而是初始化数组变量所指向的数组对象。
对象与内存分配:
实例变量和类变量:
学习java的都知道用static修饰的成员变量就是类变量,否则就是实例变量,那我们来讨论一下其的内存分配吧!
在jvm中一个类就对应一个class对象,因此一个类的一个类变量只需要一个内存空间;但对于实例变量,该类每创建一个对象就要为实例变量分配一块内存空间,换句话说,我们创建了多个对象就要为其实例变量分配多少空间。
下次我们将讲述类变量和实例变量的初始化,类继承的内存分配,还有final关键字的作用!
- java:浅谈数组与对象的内存控制
- java的对象与内存控制
- java数组与内存控制
- Java数组与内存控制
- Java数组与内存控制
- java 数组与内存控制
- Java数组与内存控制
- Java数组与内存控制
- Java---数组与内存控制
- 数组与内存的控制
- Java对象的内存控制
- 1. Java数组与内存控制
- Java数组与内存控制(转)
- Java进阶---数组与内存控制
- 疯狂java之数组与内存控制
- (一)Java数组与内存控制
- java之数组与内存控制
- java 基础概念 -- 数组与内存控制
- 黑马程序员__c语言预编译指令和typedef的使用
- 国际会所占地方很占地方
- 至芯FPGA培训中心-1天FPGA设计集训(赠送FPGA开发板)
- smslib 读不了短信的异常
- sql语句在sql server中查询每个表的记录数,占用的空间,索引占用的空间等
- java:浅谈数组与对象的内存控制
- 7-2 多线程练习-——卖票程序(方法二)
- js live方法
- 编程珠玑笔记第一章
- 二叉树的遍历(递归与迭代)
- linux定时执行脚本
- 根据屏幕动态设置view的宽度 DisplayMetrics dip2px
- InStallShield 检测dotnet2.0
- Memcached缓存大数据时对服务器内存、CPU的影响及其对硬件的配置需求