java--数据类型

Java 是一种强类型语言。 这就意味着必须为每一个变量声明一种类型。

在 Java 中, 一共有 8 种基本类型(primitive type), 其中有 4 种整型、 2 种浮点类型、 1 种用于表示 Unicode 编码的字符单元的字符类型 char 和 1 种用于表示真值的 boolean类型。

注释: Java 有一个能够表示任意精度的算术包, 通常称为“大数值”(big number)。 虽然被称为大数值, 但它并不是一种新的 Java 类型, 而是一个 Java 对象。

整型

整型用于表示没有小数部分的数值, 它允许是负数。Java 提供了 4 种整型,如下表:

类型
存储需求
取值范围
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

在 Java 中, 整型的范围与运行 Java 代码的机器无关。(可移植性)

在 Java 中, 所有的数值类型所占据的字节数量与平台无关。

注意, Java 没有任何无符号类型(unsigned)。

浮点类型

浮点类型用于表示有小数部分的数值。 在 Java 中有两种浮点类型,如下表:

 

类型
存储需求
取值范围
float
4字节
大约 ±3.402 823 47E + 38F(有效位数为 6 ~ 7 位)
double
8字节
大约 ±1.797 693 134 862 315 70E + 308(有效位数为 15 位)

double 表示这种类型的数值精度是 float 类型的两倍(也称为双精度数值)。

float 类型的数值有一个后缀 F(例如, 3.14F)。 没有后缀 F 的浮点数值(如 3.14) 默认为double 类型。 当然, 也可以在浮点数值后面添加后缀 D(例如, 3.14D)。

下面是用于表示溢出和出错情况的三个特殊的浮点数值:

正无穷大  Double.POSITIVE_INFINITY

负无穷大  Double.NEGATIVE_INFINITY

NaN(不是一个数字)  Double.NaN

注意, 不能这样检测一个特定值是否等于 Double.NaN

if(x==Double.NaN) // is never true

所有“非数值” 的值都认为是不相同的。 然而, 可以使用 Double.isNaN 方法:

if(Double.isNaN(x))

警告: 浮点数值不适用于禁止出现舍入误差的金融计算中。 

例如, 命令 System.out.println(2.0–1.1) 将打印出 0.8999999999999999, 而不是人们想象的 0.9。 其主要原因是浮点数值采用二进制系统表示, 而在二进制系统中无法精确的表示分数 1/10。 这就好像十进制无法精确地表示 1/3 一样。 

如果需要在数值计算中不含有任何舍入误差, 就应该使用BigDecimal 类。

char类型

char 类型用于表示单个字符。 通常用来表示字符常量。

boolean类型

boolean(布尔) 类型有两个值: false 和 true, 用来判定逻辑条件。 整型值和布尔值之间不能进行相互转换。

Java规范2.0里面指出boolean在内存中占1个或者4个字节。

如果使用boolean声明一个基本类型的变量时,那么该变量占4个字节。

如果使用boolean声明一个数组类型的时候,那么每个数组的元素占1个字节。

 

posted @ 2018-11-14 14:44  FreeFall  阅读(199)  评论(0编辑  收藏  举报