Java是一种强类型语言。这就意味着必须为每一个变量声明定义一种类型。Java中一共有8种基本类型,其中有4种整型、2种浮点型、1种字符类型char(用于表示Unicode编码的代码单元)和真值类型booLean。
2、基本数据类型
2.1、整形
类型 | 存储需求 | 取值范围 |
---|---|---|
int | 4字节 | -2 147 483 648 ~ 2 147 483 647(刚刚超过20亿) |
short | 2字节 | -32768~32767 |
long | 8字节 | -9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807 |
byte | 1字节 | -128 ~ 127 |
注意:Java中没有无符号整型
但Byte、Integer、Long、都提供了处理无符号位除法和求余数的方法:
static String toUnsignedString(int/long i):将指定int或long型整数转换为无符号整数对应的字符串。
static String toUnsignedString(int/long i, int radix):将指定int或long型整数转换为指定进制的无符号整数对应的字符串。
static xxx parseUnsignedXxx(String s):将指定字符串解析为无符号整数。当调用类为Integer时,xxx 代表 int。
static xxx parseUnsignedXxx(String s, int radix):将指定字符串按指定进制解析为无符号整数。调用类为Integer时则xxx代表int
static int compareUnsigned(xxx x, xxx y):将x,y两个整数转换为无符号整数后比较大小。调用类为Integer时则xxx代表int。
static long divideUnsigned(long dividend, long divisor):将x、y两个整数转换为无符号整数后计算它们相除的商。
static long remainderUnsigned(long dividend, long divisor):将x、y两个整数转换为无符号整数后计算它们相除的余数。
此外,java8还为Byte、Short增加了toUnsigneddInt(xxx x)、toUnsignedLong(yyy x)两个方法,这两个方法用于将指定byte或short类型的变量或值转换成无符号的int 或 long 值。
————————————————
版权声明:本文为优快云博主「CrownP」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/CrownP/article/details/88834275
2.2、浮点类型
类型 | 存储需求 | 取值范围 |
---|---|---|
float | 4字节 | 大约±3.402 823 47E+38F(有效位为6~7位) |
double | 8字节 | 大约±1.797 693 134 862 315 70E+308(有效位数为15位) |
注意:所有的浮点数计算都遵循IEEE754规范,具体来说,下面是用于表示溢出和错误的三个特殊浮点数值:正无穷大;负无穷大;NaN(不是一个数字)浮点数不适用于无法接受摄入误差的金融计算,浮点数无法精确表示分数,因为浮点数值二进制表示。在进行金融计算时需要使用BigDecimal,有同学或许想到使用整形来表示,但这里并不建议使用整型,因为如果计算:余额=8/3;又会回到之前的浮点数问题上去。
2.3、char 类型
char类型用于表示单个字符。有些Unicode字符可以用一个char值描述,另外一些Unicode需要两个char。如\u005B是 [ 的编码。
转义序列 | 名称 | Unicode值 |
---|---|---|
\b | 退格 | \u0008 |
\t | 制表 | \u0009 |
\n | 换行 | \u000a |
\r | 回车 | \u000d |
" | 双引号 | \u0022 |
’ | 单引号 | \u0027 |
\ | 反斜杠 | \u005c |
2.4、Unicode和char类型
要想弄清char类型,就必须了解Unicode编码。Unicode编码是对编码的统一。Java设计时采用16位的Unicode字符集,但在增加了大量的汉语、日语、韩语中的表意文字后,Unicode字符超过了65536,也就是说16位的char类型已经不能满足描述所有Unicode字符的需要了。在Java中,char类型被定义为16位数据类型,字符的十六进制范围从0x0000~0xFFFF。而Unicode标准扩展为0x10FFFF,Java为了纠正定义,开发了一种处理16位无法编码字符的方案。范围在0x010000到0x10FFFF之间的字符成为补充字符。在java核心技术一书中,强烈建议不要再程序中使用char类型。
2.4、boolean 类型
boolean 整型与boolean 值不能互转。
2.5、枚举类型
变量的取值只在一个有限的集合内。例如:衣服的尺码等。枚举类型可以取集合内的值和null值。