数据类型
Jana是种强类型语言。 这就意味着必须为每一个变量声明种类型。在Java中,共有8种基本类型( pimive type),其中有4种整型,2种浮点类型,1 种用于表示Unicode编码的字符单元的字符类型char 和1种用于表示真值的boolean类型
注意:Java有一个能够表示任意精度的算术包,通常称为“大数值”( big number)。 虽被称为大数值,但它并不是一种新的Java类型,而是一个Java对象。
整型
类型 | 存储需求 | 取值范围 |
---|---|---|
byte | 1字节 | -128 ~ 127 |
short | 2字节 | -32 768 ~ 32 767 |
int | 4字节 | -2 147 483 648 ~ 2 147 483 647(20亿) |
long | 8字节 | -9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807 |
- 整型表示的范围:
-2^n到2^n-1
- 1个字节代表一个2^8
浮点类型
类型 | 存储需求 | 取值范围 |
---|---|---|
float | 4字节 | 大约 3.4e-038~3.4e+038 |
double | 8字节 | 大约 1.7e-308~1.7e+308 |
- 阶位表示2进制指数,阶位8就是2^8
- 浮点类型不精确不能用于运算,如果要计算可以把浮点型转化为BigDecimal类
char类型
- java中char类型占2个字节、16位可以存放汉字,字母和数字占一个字节,一个字节8位,中文占2个字节,16位。
char a='a'; //任意单个字符,加单引号。
char a='中';//任意单个中文字,加单引号。
char a=111;//整数 0~65535 十进制、八进制、十六进制均可。输出字符编码表中对应的字符。
- char类型是可以运算的因为char在ASCII等字符编码表中有对应的数值。在JAVA中,对char类型字符运行时,直接当做ASCII表对应的整数来对待。
- 用单引号 ’ ’ 标识,只能放单个字符。char+char,char+int——类型均提升为int,附值char变量后,输出字符编码表中对应的字符。
boolean类型
- java中boolean类型占1个字节,计算机处理数据的最小单位是1个字节,1个字节等于8位,实际存储的空间是:用1个字节的最低位存储,其他7位用0填补,如果值是true的话则存储的二进制为:0000 0001,如果是false的话则存储的二进制为:0000 0000。
- boolean(布尔)类型有两个值:false和true,用来判断逻辑条件,整型值和布尔值之间不能进行相互转换。
数值类型之间的转换
经常需要将一种数值类型转换为另一种数值类型。 下图中给出了数值类型之间的合法转换。
在下图中有6个实心箭头,表示无信息丢失的转换:有3个虚箭头,表示可能有精度损失的转换。例如,123 456 789是一个大整数,它所包含的位数比float类型所能够表达的位数多。当将这个整型数值转换为foat类型时,将会得到同样大小的结果,但却失去了一定的精度。
int n = 123456789;
flatf=n; //f is 1.2345792E8
当使用上面两个数值进行二元操作时(例如n+f,n是整数,f 是浮点数),先要将两个操作数转换为同种类型。然后再进行计算。
- 如果两个操作数中有一 个是double类型,另一 个操作数就会转换为double类型。
- 否则,如果其中一个操作数是float类型,另一个操作数将会转换为float类型。
- 否则,如果其中一个操作数是long类型,另-个操作数将会转换为long类型。
- 否则,两个操作数都将被转换为int类型。