JAVA中一共有八种基本数据类型,分别是: byte、short、int、long、float、double、char、boolean.
数据类型类型字节数范围默认值byte整型1字节- 27 ~ 27 - 10short整型2字节- 215 ~ 215 - 10int整型4字节- 231 ~ 231 - 10long整型8字节- 263 ~ 263 - 10Lfloat浮点型4字节3.402823e+38 ~ 1.401298e-450fdouble浮点型8字节1.797693e+308 ~ 4.9000000e-3240dchar文本型2字节\u0000 ~ \uffff\u0000boolean布尔型1或4字节true / falsefalsebit(位):表示信息的最小单位,是二进制数的一位包含的信息;
byte(字节):用来计量存储容量的一种计量单位;
1 byte = 8 bit(1个字节等于8位);
根据http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html官方文档的描述:
boolean: The boolean data type has only two possible values: true and false. Use this data type for simple flags that track true/false conditions. This data type represents one bit of information, but its “size” isn’t something that’s precisely defined.
布尔类型:布尔数据类型只有两个可能的值:真和假。使用此数据类型为跟踪真/假条件的简单标记。这种数据类型就表示这一点信息,但是它的“大小”并不是精确定义的。
可以看出,boolean类型没有给出精确的定义,《Java虚拟机规范》给出了4个字节,和boolean数组1个字节的定义,具体还要看虚拟机实现是否按照规范来,所以1个字节、4个字节都是有可能的。
1)两种类型是彼此兼容的。 2)转换后的目标类型占的空间范围一定要大于被转化的源类型 由低字节向高字节自动转换(黑线表示无数据丢失的自动数据转换,红线表示转换中可能发生精度丢失)。 3)浮点型与整数型存储结构不同,浮点型中只有部分能用来确定精度,部分需要用来存储位数,所以从部分整数型转换到浮点型的过程中会出现精度丢失的情况。
将容纳更多信息的数据类型转换成一个容量更小的数据类型,可能存在精度损失的风险,编译器要求程序员进行强制类型转换。
强制转换过程中可能发生数据溢出,必须警惕。
如果两个操作数其中有一个是double类型,另一个操作就会转换为double类型。
否则,如果其中一个操作数是float类型,另一个将会转换为float类型。 否则,如果其中一个操作数是long类型,另一个会转换为long类型。 否则,两个操作数都转换为int类型