今天我们来聊一下Java这门语言的数据类型,众所周知,Java是一种强类型语言。在Java中,一共有8种基本类型,其中4种整形,2种浮点类型,1种用于表示Unicode编码的字符单元的字符类型char和1种用于表示真值的boolean类型。
整形用于表示没有小数部分的数值,允许为负。
类型 | 存储大小 | 取值范围 |
---|---|---|
int | 4字节 | -2,147,483,648 ~ 2,147,483,647 |
short | 2字节 | -32,768 ~ 32,767 |
long | 8字节 | -9,223,372,036,854,775,808 ~ 9223,372,036,854,775,807 |
byte | 1字节 | -128 ~ 127 |
在Java中,整形的范围与运行Java代码的机器无关。这解决了软件从一个平台移植到另外一个平台,或者在同一个平台的不同操作系统之间进行移植给程序员带来的麻烦。
长整形(Long类型)数值后有一个后缀 L 或 l(这里建议不要使用小写的 l 来标识,因为在某些字体的格式下,1和 l 几乎没有任何区别,给月阅读的人带来很大的困扰)。
十六进制数值前缀为 0x 或 0X,这里需要说一点,八进制的前缀是0,比如010,这样的写法比较容易让人混淆,所以我们一般不要使用八进制来表示数据。
二进制数值的前缀为 0b 或 0B,例如0b1001所代表的十进制数据就是9。
从Java7开始,可以在数字字面量加下划线,比如1000000,这些下划线的作用仅仅是使代码的易读性更高,编译器在编译的时候会去除这些下划线。
浮点类型用于表示有小数部分的数值,在Java中有两种浮点类型。
类型 | 存储大小 | 取值范围 |
---|---|---|
float | 4字节 | 大约 ± 3.402,823,47E+38F(有效位为6-7位) |
double | 8字节 | 大约 ± 1.79769313486231570E+308(有效位15位) |
double表示这种类型的数值精度是float类型的两倍(故有人称double为双精度数值),事实上我们在使用的过程中,绝大多数情况都会选用double,因为float的精度通常无法满足我们的要求。
float类型的数值有一个后缀 f 或 F,没有后缀的浮点值就是double类型的。
可以使用十六进制来表示浮点数值,例如 0.125(2的负三次方)可以表示为 0x1.0p-3。在十六进制中,使用p表示指数,而不是e。
三个特殊的浮点数值: 1. 正无穷大(Double.POSITIVEINFINITY) 2. 负无穷大(Double.NEGATIVEINFINITY) 3. NAN(Double.NaN)
一个或两个char类型的数值可以用来表示一个Unicode字符,在代码中,char类型的字面量值需要用单引号括起来,char类型的值可以表示为以 \u 开头的16进制数值,用于表示一些标点和特殊符号所用。
一些较为特殊的字符的转移序列如下:
转义序列 | 名称 | Unicode值 |
---|---|---|
\b | 退格 | \u0008 |
\t | 制表 | \u0009 |
\n | 换行 | \u000a |
\r | 回车 | \u000d |
\" | 双引号 | \u0022 |
\' | 单引号 | \u0027 |
\\ | 反斜杠 | \u005c |
Unicode转义序列会在解析代码之前得到处理(大坑慎入!)
// download uri d:\user\a,这里会报语法错误,因为 \u 后面没有跟着4个十六进制数。
布尔类型有两个值:false和true,用来判定逻辑条件,整型值和布尔值之间不能互相转换,这一点与C或C++不同,需要留意一下。
《Core Java Volume Ⅰ-Fundamentals》 -- Cay S.Horstmann
运算符