作者:Flyingis
在Java 程序运行时有 6 个地方可以存储数据:
1. 寄存器:这是最快的存储区,因为它位于不同于其他存储区的地方 —— 处理器内部。
2. 堆栈:位于通用 RAM 中,但通过 “ 堆栈指针 ” 可以从处理器那里获得直接支持。
3. 堆:一种通用的内存池 ( 也位于 RAM 区 ) ,用于存放所有的 Java 对象。
4. 静态存储:这里的 “ 静态 ” 指的是 “ 在固定的位置 ”( 尽管也在 RAM 里 ) ,存放程序运行时一直存在的数据。
5. 常量存储:常量值通常直接存放在程序代码内部,这样做是安全的,因为它们永远不会被改变。
6. 非 RAM 存储:如果数据完全存活于程序之外,那么它可以不受程序的任何控制,在程序中没有运行时也可以存在。
在 Java 程序设计时经常用到一系列类型,比如 char/byte/int/long/float 等等,我们有两种方式创建方式,例如创建一个 String 类型的引用并初始化为 “Java” :
String s = "Java";
或 String s = new String("Java")<stroke joinstyle="miter"></stroke> <formulas> <f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f> </formulas> <lock v:ext="edit" aspectratio="t"></lock><shape type="#_x0000_t75" alt="" style="width: 11.25pt; height: 11.25pt;" id="_x0000_i1025"><imagedata src="file:///D:\Temp\msohtml1\01\clip_image001.gif" o:href="http://www.blogcn.com/images/wink.gif"></imagedata></shape>;
采用第一种方式创建了一个并非是 “ 引用 ” 的变量,它的值为 “Java” ,置于堆栈之中。而第二种方式创建了一个对象,它被存储在堆里,不及在堆栈中高效。因此,当我们需要创建一个很小的、简单的变量时,采用第一种方式更好。这是 Java 数据存储的一个细节。
在Java 程序运行时有 6 个地方可以存储数据:
1. 寄存器:这是最快的存储区,因为它位于不同于其他存储区的地方 —— 处理器内部。
2. 堆栈:位于通用 RAM 中,但通过 “ 堆栈指针 ” 可以从处理器那里获得直接支持。
3. 堆:一种通用的内存池 ( 也位于 RAM 区 ) ,用于存放所有的 Java 对象。
4. 静态存储:这里的 “ 静态 ” 指的是 “ 在固定的位置 ”( 尽管也在 RAM 里 ) ,存放程序运行时一直存在的数据。
5. 常量存储:常量值通常直接存放在程序代码内部,这样做是安全的,因为它们永远不会被改变。
6. 非 RAM 存储:如果数据完全存活于程序之外,那么它可以不受程序的任何控制,在程序中没有运行时也可以存在。
在 Java 程序设计时经常用到一系列类型,比如 char/byte/int/long/float 等等,我们有两种方式创建方式,例如创建一个 String 类型的引用并初始化为 “Java” :
String s = "Java";
或 String s = new String("Java")<stroke joinstyle="miter"></stroke> <formulas> <f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f> </formulas> <lock v:ext="edit" aspectratio="t"></lock><shape type="#_x0000_t75" alt="" style="width: 11.25pt; height: 11.25pt;" id="_x0000_i1025"><imagedata src="file:///D:\Temp\msohtml1\01\clip_image001.gif" o:href="http://www.blogcn.com/images/wink.gif"></imagedata></shape>;
采用第一种方式创建了一个并非是 “ 引用 ” 的变量,它的值为 “Java” ,置于堆栈之中。而第二种方式创建了一个对象,它被存储在堆里,不及在堆栈中高效。因此,当我们需要创建一个很小的、简单的变量时,采用第一种方式更好。这是 Java 数据存储的一个细节。