---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------
程序运行时,它的数据必须存储在内存中,一个数据项需要多大的内存,存储在什么地方,以及如何存储都依赖于该数据项的类型。
运行中的程序使用两个内存区域来存储数据:堆和栈栈是一个内存数组,是一个LIFO(last-in first-out)后进,先出的数据结构,栈存储几种类型的数据;
某些类型变量的值
程序当前的执行环境
传递给方法的参数。
栈的特征
数据只能从栈的顶端插入和删除
把数据放入栈的顶端称为入栈(push)
从栈顶删除数据称为出栈(pop)
堆是一块内存区域,在堆里可以分配大块的内存用于存储某类型的数据。与栈不同,堆里的内存可以任意顺序存入和移除。
虽然程序可以在堆中存储数据,但并不能显示的删除它们,clr的自动GC(garbage collector,垃圾回收器)在判断出程序的代码将不会再访问某数据项是,自动清理无主的对象。
数据项的类型定义了存储数据需要的内存大小、组成该类型的数据成员、该类型能够执行的函数、对象在内存中存储的位置--堆和栈
值类型值需要一段单独的内存,用于存储实际的数据
引用类型需要两端内存:
第一段存储实际的数据,它总是位于堆中
第二段是一个引用,只想数据在堆中的位置。
数据如果不是其他类型的成员,
对于值类型,数据存储在栈中,对于引用类型,实际数据存储在堆中,引用存储在栈中
数据如果是其他类型的成员
引用类型的数据部分始终存放在堆中
值类型对象,或引用类型数据的引用部分可以存放在堆中,也可以存放在栈中,这依赖于实际环境
变量声明
变量在使用之前必须声明。变量声明定义了变量,并完成了2件事
给变量命名,并给他关联一种类型
让编译器为他分配一块类型
一个简单的变量声明至少需要一个类型和名称
除声明变量的类型和名称外,声明还可以把他的内存初始化为一个明确的值
无初始化语句的本地变量有一个未定义的值,在未赋值之前不能使用
一些类型的变量如果声明时没有初始化语句,那么会自动设为默认值,而另一些则不能。
---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------