Java数据类型及分析
一、java数据类型
1.基本数据类型(8种);2.引用数据类型(3种)
基本的变量类型只有一块存储空间(分配在stack中),而引用类型有两块存储空间(一块在stack中,一块在heap中)。
注意:java规范中没有明确指出boolean类型占几个字节,但有以下几种说法:
(1)1bit
理由:Boolean类型的值只分为false和true,编译后会使用0和1来表示,这两个值在内存只需一位(bit)来存储,即1bit。
(2)1字节
理由:计算机处理数据的最小单位是1字节, 因此Boolean类型用1个字节的最低位存储1或0,其他7位用0填补,
即true为:0000 0001;false为0000 0000.
(3)4字节
理由:在《Java虚拟机规范》一书中的描述:“虽然定义了boolean这种数据类型,但是只对它提供了非常有限的支持。在 Java 虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达式所操作的boolean值,在编译之后都使用Java虚拟机中 的int数据类型来代替,而boolean数组将会被编码成Java虚拟机的byte数组,每个元素boolean元素占8位”。也就是说JVM规范指出boolean当做int处理,也就是4字节,boolean数组当做byte数组处理,这样我们可以得出boolean类型占了单独使用是4个字节,在数组中是确定的1个字节。
总结:java规范中,没有明确指出boolean的大小。在《Java虚拟机规范》给出了4个字节,和boolean数组1个字节的定义,具体还要看虚拟机实现是否按照规范来,所以1个字节、4个字节都是有可能的。
二、数据类型的包装类
数据类型 | 封装类 |
boolean(布尔型) | Boolean |
byte(字节型) | Byte |
char(字符型) | Character |
short(短整型) | Short |
int(整型) | Integer |
long(长整型) | Long |
float(浮点型) | Float |
double(双精度浮点型) | Double |
封装类为各个数据类型提供一些数据的操作方法,可以直接使用;
例如String跟int的互相转化:
int i = Integer.parseInt("13");
nt ii = Integer.valueOf("12");
String s1 = String.valueOf(123);
String s2 = Integer.toString(i);
String s3 = "" + i;