Java对象储存的地方
1).寄存器。这是最快的储存区域,它不属于其他存储区的地方-----处理器内部
Java有四个寄存器
1.程序记数寄存器:跟踪程序执行的准确位置
2.堆栈指针寄存器:指示操作栈项
3.框架寄存器:指向当前执行的环境
4.变量寄存器:指向当前执行环境中第一个本地变量
2).栈。位于通用RAM(随机访问存储器)中,仅次于寄存器。
当线程执行一个方法时,就会随之创建一个对应的栈帧,并将建立的栈帧压栈,当方法执行完毕之后,便会将栈帧出栈,优点是存取速度比堆要快但缺点是。存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共享。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。
3)堆一种通用的内存池,用于存放所有的Java对象,堆于栈的好处是,编译器不需要知道存储的数据在堆里存活多长时间,所以堆比栈更好的灵活性,当需要一个对象的时候只需要new,会自动在堆里进行存储分配,但是堆进行分配和清理的时候需要更多的时间
4)常量存储。常量通常存储在代码里面,因为它们几乎不会被改动,也可以存储在ROM中(只读存储器)
5).非RAM存储。如果数据完全存活在程序只外,在没有运行时也可以存在。
1.流对象:对象转换成字节流,通常被发送给另一台机器。
2.持久化对象:对象被存放在磁盘上面
这种存储方式的技巧在于:把对象转化成为可以存放在其他媒介上的事物,在需要的时候可恢复成常规的RAM对象
基本数据类型(java的数据类型分为基本数据类型和引用数据类型)
数据类型 | 位数 | 默认值 | 范围 | 包装类型 |
---|---|---|---|---|
byte(位) | 8 | 0 | -2^7 - 2^7-1 | Byte |
short(短整数) | 16 | 0 | -2^15 - 2^15-1 | Short |
int(整数) | 32 | 0 | -2^31 - 2^31-1 | Integer |
long(长整数) | 64 | 0 | -2^63 - 2^63-1 | Long |
float(单精度浮点型)) | 32 | 0 .0 | -2^31 - 2^31-1 | Float |
double(双精度浮点型) | 64 | 0 .0 | -2^63 - 2^63-1 | Double |
char(字符) | 16 | 空 | 0 - 2^16-1 | Char |
boolean(布尔值) | 8 | false | true、false | Boolean |
其他:
BigInteger支持任意精度的整数,可以表示任何大小的整数值不会丢失精度
BigDecimal支持任意精度的点数,可以进行精确伙货币的计算