java数据的存储,有5种方式,分别如下:
编号 | 存储方式 | 简要说明 | 存储的数据 |
1 | 寄存器 |
位于CPU内部,最快的存储区。一般的CPU有16个通用寄存器,每个寄存器32位/64位。 它用于临时存储CPU即将要处理的数据。 如CPU计算1+2,那么CPU将分配一个寄存器r0来临时存放数值1,r1存放2;计算结束后,结果3存放回r0。 | (1)二进制数据 |
2 | 栈 |
位于RAM(随机访问存储器/内存)中,java方法体中的基本类型和引用就存放在“栈”中。 java正是利用栈“先进后出”的特点来快速分配新内存和释放内存的。 如 void founction(){ int i; float f; ...}执行该方法时,i先被放入堆栈,接着f被放入堆栈,执行完founction()后,f会先被释放,接着i才被释放掉,该方法所申请的栈内存将全部自动释放。 |
方法体中的: (1)基本类型 如int i、boolean b (2)引用 如 Integer in、String s |
3 | 堆 | 位于RAM中,java所有的对象都存放在“堆”中。 |
(1)对象 如 new Integer()、new String()。对象以及该对象内部所携带的类成员都存储在堆中。 |
4 | 常量存储 | 常量值通常直接存放在程序代码内部,代码以二进制的形式存储于ROM(只读存储器/sd卡/闪存)。 |
(1)常量 如 final int i = 123;那么常量"123"存储在ROM中。 |
5 | 非RAM存储 |
有的数据完全存活于程序之外,在程序没有运行时也可以存在并存储于其他媒介上。 如流数据,转化成字节流被发送到另一台机器。如持久化数据,存放在磁盘上,即使程序终止,它仍保持自己的状态。 |
(1)流数据 如 OutputStream对象所携带的数据,这些数据在传输过程中就存储在网络媒介中。 (2)持久化数据/文件 如 new File("file.txt");File对象所操作的txt文件,这个文件就存储在磁盘中。 |