Java机制中基本数据类型是可以直接在栈中分配内存的数据;引用类型是数据的引用在栈中,对象在堆中;Java
中对数据在内存中的分配位置很重要,下图是从马士兵老师的讲课内容中找的一章图,它很可视化地介绍了程序在操
作系统中运行的整个过程。对对象、变量在堆栈中的存储也很明显。
1字符=2字节;
1字节=8 bits=256个数(-128~127);
基本数据类型 |
存储空间(字节) |
取值范围 |
包装类 |
Byte |
1 |
-128~127 |
Java.lang.Byte |
Short |
2 |
-2^15~2^15-1 |
Java.lang.Short |
Int |
4 |
-2^31~2^31-1 |
Java.lang.Integer |
Long |
8 |
-2^63~2^63-1 |
Java.lang.Long |
Float |
4 |
-3.403E38~3.403E38 |
Java.lang.Float |
Double |
8 |
-1.798E308~1.798E308 |
Java.lang.Double |
char |
2 |
0~2^16-1 |
Java.lang.Character |
boolean |
|
False或ture |
Java.lang.Boolean |
备注:包装类是为了能将Java中的基本数据类型当做对象来处理;
这些数据类型的使用可以看出程序员对基础知识的掌握程度,也是一个超级优秀的IT人的必备基础。
规则:
1.Boolean 类型不可以转换为其他类型;
2.存储空间小的类型运算时自动转换成空间大的:
Btye,short,char->int->long->float->double。
存储空间大的类型可以通过强制转换转成空间小的类型,但是会丢失精度;
例如:类型 A = (类型)(B+C);
浮点型强制转换时在末尾加f,如float A=1.23f;
3.Byty,short,char之间不会相互转换,三者运算时默认转int类型;
可以看出Java对自己的语言包装是很有长期规划的想法,它将可移植性做到了最大化,Java中每个数据类型的存
储空间都是固定不变的,这样在编译后不会出现溢出的情况,这也是为什么说Java语言是静态类型的原因了。