Java 基本类型

1. 概述 

Java 编程语言具有八种数据类型。在本教程中,我们将介绍每种类型。


2. 数据类型 


Java 中定义的八个基本类型是 int、byte、short、long、float、double、boolean 和 char。这些不被视为对象,代表原始值。

它们直接存储在堆栈中。


2.1 int


我们要介绍的第一个数据类型是 int。也称为整数,int 类型包含范围广泛的非小数数值。


Java 使用 32 位内存来存储它。换句话说,它可以表示从 -2,147,483,648 (-2^31) 到 2,147,483,647 (2^31-1) 的值。

 

在 Java 8 中,可以通过使用新的特殊辅助函数来存储最大为 4,294,967,295 (2^32-1) 的无符号整数值。 


我们可以简单地声明一个 int:

int x = 424_242;

int y;

在没有赋值的情况下声明的 int 的默认值为 0。如果变量是在方法中定义的,我们必须先赋值才能使用它。


我们可以对整数进行所有标准的算术运算。只是要注意,在对整数进行这些操作时,小数值会被砍掉。


2.2 byte

byte 是一种类似于 int 的数据类型,只是它只占用 8 位内存。这就是我们称之为字节的原因。因为内存太小了,byte只能保存-128(-2^7)到127(2^7-1)的值。


以下是我们如何创建字节:

byte b = 100;

byte empty;

byte 的默认值也是 0。

2.3 short 

如果我们想节省内存,而 byte 又太小,我们可以使用 byte 和 int 之间的类型:short。


16 位内存,它是 int 大小的一半,是 byte 大小的两倍。它的值范围是 -32,768(-2^15) 到 32,767(2^15 – 1)。

short s = 20_020;

short s;

与其它类型一样,默认值为 0。


2.4 long


最后一个与整数相关的数据类型是 long。

long 是 int 的大哥。它在内存中占64 位,因此它可以保存更大的值。long的范围-9,223,372,036,854,775,808 (-2^63) 到 9,223,372,036,854,775,807 (2^63 – 1) 之间。

我们可以简单地声明:

long l = 1_234_567_890;

long l;

与其他整数类型一样,默认值也是 0。我们可以在 long 上使用所有适用于 int 的算术。


2.5 float


我们使用浮点类型表示 Java 中的基本小数。这是一个单精度十进制数,如果我们超过了小数点后六位,这个数字就会变得不那么精确,而更像是一个估计值。


在大多数情况下,我们并不关心精度损失。但是如果我们的计算需要绝对的精度(例如,金融操作、登月等),我们需要为这项工作设计特定类型。请查看 Java 类 BigDecimal。


这种类型与 int 一样存储在 32 位内存中。但是,由于是浮点数,它的范围有很大的不同。它可以表示正数和负数。最小的小数是 1.40239846 x 10^-45,最大值是 3.40282347 x 10^38。


定义浮点数与任何其他类型相同:

float f = 3.145f;

float f;

默认值为 0.0 而不是 0。另外,请注意我们将 f 指定添加到文字数字的末尾以定义浮点类型。否则,Java 将抛出错误,因为十进制值的默认类型是double。


我们还可以对float执行所有标准算术运算。然而,重要的是要注意我们执行浮点运算与整数运算不同。

2.6 double


接下来,我们看double。它存储在 64 位内存中。这意味着它代表的数字范围比浮点数大得多,范围是 4.9406564584124654 x 10^324 到 1.7976931348623157 x 10^308。


定义 double 与其他数字类型相同:

double d = 3.13457599923384753929348D;

double d;

与浮点数一样,默认值也是 0.0。与浮点数类似,我们附加字母 D 以指定为双精度数。


2.7 boolean


最简单的数据类型是布尔值。它只能包含两个值:true或false。其值存储在一个bit中。然而,为方便起见,Java 填充该值并将其存储在一个字节中。


定义布尔值的方式:

boolean b = true;

boolean b;

在没有值的情况下声明它默认为 false。布尔值是控制我们的程序流的基石。我们可以对它们使用布尔运算符(例如,and、or 等)。


2.8 char


最后的数据类型是 char。char 也称为字符,是一个 16 位整数,表示 Unicode 编码的字符。它的范围是从 0 到 65,535。在 Unicode 中,表示“\u0000”到“\uffff”。(有关所有的 Unicode 值的列表,请查看 Unicode Table 等网站。)


定义一个字符:

char c = 'a';

char c = 65;

char c;

在定义变量时,我们可以使用任何字符文字,它们会自动转换为我们的 Unicode 编码。字符的默认值为“/u0000”。


2.9 溢出


数据类型有大小限制。但是如果我们尝试存储一个大于最大值的值会发生什么?我们会遇到一种叫做溢出的情况。

当整数溢出时,它会翻转到最小值并从那里开始向上计数。

int i = Integer.MAX_VALUE;
int j = i + 1;
// j will roll over to -2_147_483_648

double d = Double.MAX_VALUE;
double o = d + 1;
// o will be Infinity

Underflow 是同样的问题,只是它涉及存储一个小于最小值的值。


2.10 自动装箱


每个基本数据类型还具有可以包装它的完整 Java 类实现。例如,Integer 类可以包装一个 int。


有时需要从基本类型转换为其对象包装器(例如,将它们与泛型一起使用)。幸运的是,Java 可以自动为我们执行这种转换,这个过程称为自动装箱 (Autoboxing):

Character c = 'c';

Integer i = 1;


3. 总结

在本文中,我们介绍了 Java 支持的八种基本数据类型。 这些是大多数Java 程序使用的构建块,因此非常值得了解它们是如何工作的。

展开阅读全文