基本数据类型的必要性
上面的声明是Java安全性与健壮性的关键保证。Java对数据类型兼容性的要求比其他任何语言都要严格。
Java编译器,对所有的表达式和参数都要进行类型相容性的检查,以保证类型是兼容的。
任何类型的不匹配都是错误的,在编译器完成编译以前,错误必须被改正。
Java定义了8个简单(或基本)的数据类型:字节型byte
,短整型short
,整型int
,长整型long
,字符型char
,浮点型float
,双精度型double
,布尔型boolean
,这些类型可分为4组:
- 整数:该组包括字节型(byte),短整型(short),整型(int),长整型(long),它们有符号整数。
- 浮点型数:该组包括浮点型(float),双精度型(double),它们代表有小数精度要求的数字。
- 字符:这个组包括字符型(char),它代表字符集的符号,例如字母和数字。
- 布尔型:这个组包括布尔型(boolean),它是一种特殊的类型,表示真/假值。
整数类型
Java中的整数,都是有符号的值,正数或负数。Java 不支持仅仅是正的无符号的整数。
许多其他计算机语言,包括C/C++,支持有符号或无符号的整数。Java中的无符号(unsigned)概念主要被用来指定高位high-order bit
状态,它定义了当int表示一个数字时的符号。Java 通过增加一个专门的“无符号右移”运算符来管理高位。
整数类型的长度(width)不应该被理解为它占用的存储空间,而应该是该类变量和表达式的行为(behavior)。只要你对类型进行了说明,Java的运行环境对该类的大小是没有限制的。不过,为了提高性能,至少字节型和短整型的存储是32位(而非8位和16位),因为这是现在大多数计算机使用的字的大小。
整数类型 | 表示 | 长度 | 取值范围 |
---|---|---|---|
字节型 | byte | 8 | –128~127 |
短整型 | short | 16 | –32,768 ~ 32,767 |
整型 | int | 32 | –2,147,483,648 ~ 2,147,483,647 |
长整型 | long | 64 | –9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
虽然记住这些取值范围不是需要的,但是至少需要对它们有个映象。
字节型
在处理二进制数据,IO流等的时候,字节型有用武之地。
通过byte
这个关键字的使用来定义字节变量。
byte b;
短整型
被用的最少的类型,它的存在主要是因为在Java初期,存储资源紧张。
通过short
这个关键字的使用来定义短整型变量。
short s;
整型
最常用的整数类型。在任何场景下,如果你需要定义一个数字,首先想到的应该是整型。
通过int
这个关键字的使用来定义整型变量。
int i;
长整型
长整型,主要是在那些整型不足以保存所要求的数值时用的。要表示一个毫秒数,就可能需要使用到这种类型。
通过long
这个关键字的使用来定义长整型变量。
long time;
在给长整型赋值的时候,需要在数据后加一个字母l
,虽然它不分大小写,但是若写成小写l
容易与数字1
混淆,不容易分辩,所以最好大写L
。
long time = 1l;
这种写法就不好分辨是 1 还是 11
long time = 11L;
这样写就可以避免上面的烦恼。
浮点型
浮点数字,也就是人们知道的实数real
,一般用于金钱,数学计算等。
浮点类型 | 表示 | 长度 | 取值范围 |
---|---|---|---|
单精度 | float | 32 | 3.402823e+38 ~ 1.401298e-45 |
双精度 | double | 64 | 1.797693e+308 ~ 4.900000e-324 |
单精度
单精度在一些处理器上比双精度更快而且只占用双精度一半的空间,但是当值很大或很小的时候,
它将变得不精确。当你需要小数部分并且对精度的要求不高时,单精度浮点型的变量是有用的。
通过float
这个关键字的使用来定义单精度变量。
float f;
在给长整型赋值的时候,需要在数据后加一个字母f
,它不分大小写,大写F
也是可以的。
float f = 12.34f;
双精度
双精度比单精度使用的更多,在一些现代的被优化用来进行高速数学计算的处理器上双精度型实际上比单精度的快。所有超出人类经验的数学函数,如sin( ),cos( ),和sqrt( )均返回双精度的值。当你需要保持多次反复迭代的计算的精确性时,或在操作值很大的数字时,双精度型是最好的选择。
通过double
这个关键字的使用来定义双精度变量。
double money;
在给长整型赋值的时候,需要在数据后加一个字母d
,它不分大小写,大写D
也是可以的。
double money = 23.50d;
字符
Java使用Unicode
码代表字符。Unicode定义的国际化的字符集能表示迄今为止人类语言的所有字符集。Java中的char 类型是16位,其范围是0~65,536,没有负数的char。
通过char
这个关键字的使用来定义字符变量。
char c;
在给长整型赋值的时候,需要在数据前后加单引号'
。也可以使用 ASCII 码
来给 char 赋值。
char c1 = 'A';
或者
char c2 = 65;
上面两种写法完全不同,但是效果是一样的。
布尔型
Java 中最简单的数据类型。它的值只能是真 ture
或假 false
这两个值中的一个。
通过boolean
这个关键字的使用来定义字符变量。
boolean b;
boolean success = true;
Java 中的基本数据类型只有如下 8 个:
数据类型 | 默认值 | 包装类型 | 默认值 |
---|---|---|---|
byte | 0 | Byte | null |
short | 0 | Short | null |
int | 0 | Integer | null |
long | 0L | Long | null |
float | 0.0f | Float | null |
double | 0.0d | Double | null |
char | ‘u0000’ | Character | null |
boolean | false | Boolean | null |
大部分的包装类型是 基本数据类型 的首字母大写,需要注意 Integer 、Character。
包装类型的默认值均为 null
数据类型种,还有一个重要概念:类型转换。
在此之前,需要先对 变量 有一定认知。