`

程序运行时数据保存到什么地方和JAVA类中主成员的默认值

阅读更多
程序运行时数据保存到什么地方?

(1) 寄存器。这是最快的保存区域,因为它位于和其他所有保存方式不同的地方:处理器内部。然而,寄存
器的数量十分有限,所以寄存器是根据需要由编译器分配。我们对此没有直接的控制权,也不可能在自己的
程序里找到寄存器存在的任何踪迹。
(2) 堆栈。驻留于常规RAM(随机访问存储器)区域,但可通过它的“堆栈指针”获得处理的直接支持。堆
栈指针若向下移,会创建新的内存;若向上移,则会释放那些内存。这是一种特别快、特别有效的数据保存
方式,仅次于寄存器。创建程序时,Java 编译器必须准确地知道堆栈内保存的所有数据的“长度”以及“存
在时间”。这是由于它必须生成相应的代码,以便向上和向下移动指针。这一限制无疑影响了程序的灵活
性,所以尽管有些Java 数据要保存在堆栈里——特别是对象句柄,但Java 对象并不放到其中。
(3) 堆。一种常规用途的内存池(也在RAM 区域),其中保存了Java 对象。和堆栈不同,“内存堆”或
“堆”(Heap)最吸引人的地方在于编译器不必知道要从堆里分配多少存储空间,也不必知道存储的数据要
在堆里停留多长的时间。因此,用堆保存数据时会得到更大的灵活性。要求创建一个对象时,只需用new 命
令编制相关的代码即可。执行这些代码时,会在堆里自动进行数据的保存。当然,为达到这种灵活性,必然
会付出一定的代价:在堆里分配存储空间时会花掉更长的时间!
(4) 静态存储。这儿的“静态”(Static)是指“位于固定位置”(尽管也在RAM 里)。程序运行期间,静
态存储的数据将随时等候调用。可用static 关键字指出一个对象的特定元素是静态的。但Java 对象本身永
远都不会置入静态存储空间。
(5) 常数存储。常数值通常直接置于程序代码内部。这样做是安全的,因为它们永远都不会改变。有的常数
需要严格地保护,所以可考虑将它们置入只读存储器(ROM)。
(6) 非RAM 存储。若数据完全独立于一个程序之外,则程序不运行时仍可存在,并在程序的控制范围之外。
其中两个最主要的例子便是“流式对象”和“固定对象”。对于流式对象,对象会变成字节流,通常会发给
另一台机器。而对于固定对象,对象保存在磁盘中。即使程序中止运行,它们仍可保持自己的状态不变。对
于这些类型的数据存储,一个特别有用的技巧就是它们能存在于其他媒体中。一旦需要,甚至能将它们恢复
成普通的、基于RAM 的对象。Java 1.1 提供了对Lightweight persistence 的支持。未来的版本甚至可能提
供更完整的方案。

类中主成员的默认值
Boolean false
Char '\u0000'(null)
byte (byte)0
short (short)0
int 0
long 0L
float 0.0f
double 0.0d

一旦将变量作为类成员使用,就要特别注意由Java 分配的默认值。这样做可保证主类型的成员变量肯定得到了初始化,可有效遏止多种相关的编程错误。
分享到:
评论

相关推荐

    Java开发技术大全(500个源代码).

    MyFileOutput.java 将键盘读入的文字保存到文件 MyPipedIO.java 管道流示例 MySequenceIn.java 顺序输入流示例 ObjectFileTest.java 序列化对象示例 ReadAndWrite.java 读入和写出数据 ReadAndWriteFile.java ...

    修复文件默认值,文件运行方式恢复,恢复程序运行方式

    应用程序的运行方式,被修该以后,不知道原有的运行方式是什么?运用此程序可以恢复到原有的状态。

    Java中八种基本数据类型的默认值

    主要介绍了Java中八种基本数据类型的默认值 的相关资料,需要的朋友可以参考下

    Java语言 包装类讲解案例代码 ( 设计目的(作用)和用途、自动装箱与拆箱、常用方法、 null和默认值)

    本代码资源是一个关于Java语言中包装类的讲解案例代码。通过使用实际的示例代码,详细讲解了包装类的定义、用法和优势。...希望这个代码资源能够帮助你更好地理解和应用Java中的包装类概念。祝你编程愉快!

    Java_Date_日期时间整理

    Java_Date_日期时间整理 1、获取服务器端当前日期:1、获取服务器端当前日期:按照指定格式打印日期

    java代码-Java变量各类型默认值

    java代码-Java变量各类型默认值

    Java成员变量默认值原理详解

    主要介绍了Java成员变量默认值原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    java高级之注解

    java高级之注解 注解的概念: 注解是JDK1.5的新特性。 注解相当一种标记,是类的组成部分,可以给类携带一些额外的信息。 注解可以加在包,类,字段,方法,方法参数以及局部变量上。 注解是给编译器看的,编译器...

    hibernate实体映射文件字段设置默认值

    hibernate实体映射文件字段设置默认值

    Integer和int的不同

    在JSP开发中,Integer的默认为null,所以用el表达式在文本框中显示时,值为空白字符串,而int默认的默认值为0,所以用el表达式在文本框中显示时,结果为0,所以,int不适合作为web层的表单数据的类型。  

    sqlserver中日期型字段设默认值

    sqlserver中日期型字段设默认值默认值

    绑定数据后,怎么添加另外的默认值

    绑定数据后,怎么添加另外的默认值绑定数据后,怎么添加另外的默认值

    java中的@Value获取不到配置文件的值,也加载不到默认值

    实际上就是对类上的value后面的属性值进行解析,然后拿到解析的数据和配置文件中的数据进行对比。如果对比成功,那么则通过反射,把相关的属性进行赋值。而配置文件的数据我们在上面加载environment文件的时候,已经...

    页面置换算法(java)

    分别采用最佳置换算法、先进先出置换算法、最近最久未使用置换算法(LRU)时,假如一个作业的页面走向为4、3、2、1、4、3、5、4、3、2、1、5,当分配给该作业的物理块数M分别为3和4时,试计算在访问过程中所发生的缺页...

    Thinking in java4(中文高清版)-java的'圣经'

    2.1 用引用操纵对象 2.2 必须由你创建所有对象 2.2.1 存储到什么地方 2.2.2 特例:基本类型 2.2.3 Java中的数组 2.3 永远不需要销毁对象 2.3.1 作用域 2.3.2 对象的作用域 2.4 创建新的数据类型:类 2.4.1 域和方法 ...

    文本框设置默认值和验证提交

    文本框设置默认值和验证提交 文本框设置默认值和验证提交 文本框设置默认值和验证提交 文本框设置默认值和验证提交 文本框设置默认值和验证提交

    thinking in Java 第四版中文 part1

    2.2.1 存储到什么地方 2.2.2 特例:基本类型 2.2.3 Java中的数组 2.3 永远不需要销毁对象 2.3.1 作用域 2.3.2 对象的作用域 2.4 创建新的数据类型:类 2.4.1 域和方法 2.4.2 基本成员默认值 2.5 方法、参数和返回值 ...

    输入框默认值

    * @功能 实现功能是初始化时文本框中默认值,当鼠标移入则清空默认值;但如果用户没有输入任何值,则还原默认值;提交时候如果是默认值则清空 * @描述 基于jquery 所以使用前必须导入jquery包 * @使用方法: 1,在...

    Java开发技术大全 电子版

    第4篇Java中的高级技术 第8章Java的多线程机制266 8.1线程的概念266 8.1.1多线程的特点266 8.1.2线程的状态267 8.2Thread类268 8.2.1Thread类的构造方法268 8.2.2Thread类的常用方法268 8.3多线程程序的编写...

    重载-参数含有设置默认值

    可选参数允许为方法的一些参数提供默认值,并允许使用者重载类型。

Global site tag (gtag.js) - Google Analytics