Java数据类型简单来说分为八种基本数据类型与引用类型(非基本数据类型)。
八种基本数据类型:
1、byte类型--------------------------------1个字节-------------------------------Byte(包装类)
2、短整型(short)----------------------2个字节-------------------------------Short(包装类)
3、整型(int)----------------------------4个字节--------------------------------Integer(包装类)
4、长整型(long)-----------------------8个字节--------------------------------Long(包装类)
5、字符型(char)-----------------------2个字节-------------------------------Character(包装类)
6、单精度浮点型(float)--------------4个字节-------------------------------Float(包装类)
7、双精度浮点型(double)-----------8个字节-------------------------------Double(包装类)
8、布尔型(boolean)------------------不确定---------------------------------Boolean(包装类)
(单独使用4个字节,数组中1个字节,按内存算1个byte)
数据类型的闭环:
只有 int 和 long 类型可以实现闭环(最大值+1=最小值),byte 和 short 不实现是因为在运算中会整型提升,float 、double 和 char 无法闭环没有意义。
数据类型的转换:
1、从低向高自动转换。
2、从高向低不可自动转换,需要强制类型转换,会丢失精度,如果被转换者超过了转换后者的范围,则强转为转换类型的最大值。
3、有运算符时,先进行数据类型提升,尔后将结果赋值给提升的数据类型,最后运算。< 4 的 ↑ 为 4,小的 ↑ 为大的。
4、特殊:byte 在赋值时可以进行高到低转换,只能 int 到 byte。且:byte n 进行 n++ 时不会精度丢失。
Java内存结构(JVM):
堆:空间最大,线程共享,存放成员变量--------------------堆内存是主要的GC(垃圾回收)地点
方法区: 线程共享,存放静态变量和类信息----------------次要GC地点
虚拟机栈:线程私有,存放局部变量
本地方法栈:线程私有,存放native相关信息
程序计数器:线程私有,记录程序运行的位置
Java变量类型:
普通成员变量------------------------对象-----------------------------------------堆(存储地点)
静态成员变量------------------------类--------------------------------------------方法区(存储地点)
局部变量------------------------------局部-----------------------------------------虚拟机栈(存储地点)
八种数据类型结合三种变量类型共有24种可能的组合,关于其存储在哪个区域,主要由它是什么变量类型决定,与是何数据类型无关。