Java 中定义的八个原语是int、byte、short、long、float、double、boolean 和char。这些不被视为对象并代表原始值。
它们直接存储在Java堆栈中。
我们要介绍的第一个原始数据类型是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。
如果变量是在方法中定义的,我们必须先赋值才能使用它。
我们可以对int执行所有标准算术运算。请注意,在对整数执行这些操作时,十进制值将被截断。
byte是一种类似于int的原始数据类型,只是它只占用 8 位内存。这就是我们称之为字节的原因。因为内存太小了,byte只能保存 -128 (-2 7 ) 到 127 (2 7 – 1) 的值。
以下是我们如何创建byte:
byte b = 100;
byte empty;
byte的默认值也是 0。
我们的 Java 原始数据类型列表的下一站是short。
如果我们想节省内存并且byte太小,我们可以使用介于byte和int之间的类型:short。
在 16 位内存中,它是int大小的一半,是byte大小的两倍。它的可能值范围是 -32,768(-2 15 ) 到 32,767(2 15 – 1)。
short声明如下:
short s = 20_020;
short s;
也与其他类型类似,默认值为 0。我们也可以在其上使用所有标准算术。
我们最后一个与整数相关的原始数据类型是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的算术。
我们使用浮点类型表示 Java 中的基本小数。这是一个单精度十进制数。这意味着,如果我们超过了小数点后六位,这个数字就会变得不那么精确,而更像是一个估计值。
在大多数情况下,我们并不关心精度损失。但是如果我们的计算需要绝对的精度(例如金融操作、登月等),我们需要使用为这项工作设计的特定类型。有关更多信息,请查看 Java 类Big Decimal。
这种类型与int一样存储在 32 位内存中。但是,由于是浮点数,它的范围有很大的不同。它可以表示正数和负数。最小的小数是 1.40239846 x 10 -45,最大值是 3.40282347 x 10 38。
我们声明float与任何其他类型相同:
float f = 3.145f;
float f;
默认值为 0.0 而不是 0。另外,请注意我们将f指定添加到文字数字的末尾以定义浮点数。否则,Java 将抛出错误,因为十进制值的默认类型是double。
我们还可以对float执行所有标准算术运算。然而,重要的是要注意我们执行浮点运算与整数运算非常不同。
接下来,我们看一下double。它的名字来源于它是一个双精度十进制数。
它存储在 64 位内存中。这意味着它代表的可能数字范围比float大得多。
虽然,它确实受到与float相同的精度限制。范围是 4.9406564584124654 x 10 -324到 1.7976931348623157 x 10 308。该范围也可以是正数或负数。
声明double与其他数字类型相同:
double d = 3.13457599923384753929348D;
double d;
与float一样,默认值也是 0.0 。与浮点数类似,我们附加字母D以将文字指定为双精度数。
最简单的原始数据类型是boolean。它只能包含两个值:true或false。它将其值存储在一个位中。
然而,为方便起见,Java 填充该值并将其存储在单个字节中。
以下是我们声明boolean的方式:
boolean b = true;
boolean b;
在没有值的情况下声明它默认为false。布尔值是控制我们的程序流的基石。我们可以对它们使用布尔运算符(例如,和,或,等等)。
最后要查看的原始数据类型是char。
char也称为字符,是一个 16 位整数,表示 Unicode 编码的字符。它的范围是从 0 到 65,535。在 Unicode 中,这表示'\u0000'到'\uffff'。
有关所有可能的 Unicode 值的列表,请查看Unicode Table等网站。
现在让我们声明一个char:
char c = 'a';
char c = 65;
char c;
在定义变量时,我们可以使用任何字符文字,它们会自动转换为我们的 Unicode 编码。字符的默认值为'/u0000'。
原始数据类型有大小限制。但是如果我们尝试存储一个大于最大值的值会发生什么?
我们遇到了一种叫做溢出的情况。
当整数溢出时,它会翻转到最小值并从那里开始向上计数。
浮点数通过返回 Infinity 溢出:
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
下溢是同样的问题,只是它涉及存储一个小于最小值的值。当数字下溢时,它们返回 0.0。
每个原始数据类型还具有可以包装它的完整 Java 类实现。例如,Integer类可以包装一个int。有时需要从原始类型转换为其对象包装器(例如,将它们与泛型一起使用)。
幸运的是,Java 可以自动为我们执行这种转换,这个过程称为Autoboxing:
Character c = 'c';
Integer i = 1;
以上就是关于“八大基本数据类型”的介绍,大家如果对此比较感兴趣,想了解更多相关知识,可以关注一下Java的数据类型介绍,里面有更丰富的知识等着大家去学习,相信对大家一定会有所帮助的。
你适合学Java吗?4大专业测评方法
代码逻辑 吸收能力 技术学习能力 综合素质
先测评确定适合在学习