Java中的原始数据类型

了解Java中的所有八种原始数据类型,它们的内存大小,默认值以及最大值和最小值范围。

原始数据类型由语言预定义的,并通过一个名为保留关键字。让我们在下图中查看每种原始数据类型。

Java中的原始数据类型
Java中的原始数据类型

1.集成数据类型

整数数据类型是数值数据类型,其值为整数。Java提供5种积分数据类型byteshortintlong,和char

1.1。int数据类型

  • int数据类型是一个32位有符号的Java原始数据类型。int数据类型的变量占用32位内存
  • 其有效范围是-2,147,483,6482,147,483,647(-2 31至2 31 – 1)。
  • 此范围内的所有整数都称为整数文字(或整数常量)。例如,10,-200、0、30、19等是int的整数文字。

可以将整数文字分配给int变量say counter,例如:

int counter = 21;
1.1.1。整数 Wrapper 类

Java有名为一个Wrapper类Integer,它定义两个常量来表示int数据类型的最大值和最小值,Integer.MAX_VALUEInteger.MIN_VALUE。它是int值的对象表示。

int max = Integer.MAX_VALUE; // Assigns maximum int value to max
int min = Integer.MIN_VALUE; // Assigns minimum int value to min

1.2。长数据类型

  • 长的数据类型为64位有符号的Java原始数据类型
  • 当对整数的计算结果可能超出int数据类型的范围时,将使用它。
  • 其范围是-2 63至2 63 – 1。
  • long范围内的所有整数都称为long类型的整数文字

long类型的整数文字始终以“ L”(或小写字母“ l”)结尾。

long num1 = 0L;
long num2 = 401L;
long mum3 = -3556L;
1.2.1。型铸

即使存储在long变量中的值恰好在int数据类型的范围内,如未进行显式类型转换也不允许从long到int赋值,如以下示例所示:

int num1 = 5;
long num2 = 25L;
 
// A compile-time error。 Even if num2's value 25 which is within the range of int.
num1 = num2;

如果要将long变量的值分配给int变量,则必须在代码中明确提及这一事实,以便Java确保您知道可能存在数据溢出。您可以使用Java中的“ cast”来执行此操作,如下所示:

long num1 = (int) num2; // Now it is fine because of the "(int)" cast

通过编写(int)num2,您正在指示Java将存储在其中的值num2视为int。在运行时,Java将仅使用的32个最低有效位num2,并将存储在这32位中的值分配给num1。如果num2其值超出int数据类型的范围,则不会获得相同的值num1,这将导致数据丢失

1.2.2。 Long Wrapper类

Java有一个类Long(注意在Long上壳体L),它定义了两个常量来表示长的数据类型的最大值和最小值,Long.MAX_VALUELong.MIN_VALUE

long max = Long.MAX_VALUE;
long min = Long.MIN_VALUE;

1.3。字节数据类型

  • 字节数据类型是8位带符号 Java基本整数数据类型
  • 其范围是-128至127(-27至27 – 1)。这是Java中可用的最小整数数据类型
  • intlong文字不同,没有字节文字。
  • 但是,您可以将属于byte范围的任何int文字分配给byte变量。
byte b1 = 125;
byte b2 = -11;
1.3.1。型铸

如果intbyte变量分配文字,并且该值超出字节数据类型的范围,则Java会生成编译器错误。以下代码段将产生编译器错误:

// An error。 150 is an int literal outside -128 to 127
byte b3 = 150;

Java不允许您将范围较大的数据类型的变量的值分配给范围较小的数据类型的变量,因为进行这种分配可能会导致精度损失。要进行从int到byte的赋值,必须像在long to to int赋值时那样使用强制转换。

b1 = (byte)num1; // Ok
1.3.2。字节 Wrapper 类

Java有一个类Byte(注意在字节上壳体B),它定义两个常量来表示字节数据类型的最大值和最小值,Byte.MAX_VALUE Byte.MIN_VALUE

byte max = Byte.MAX_VALUE;
byte min = Byte.MIN_VALUE;

1.4。短数据类型

  • short数据类型是一个16位有符号的Java基本整数数据类型。其范围是-32768至32767(或-215至215 – 1)。
  • 与int和long文字不同,没有short文字。
  • 但是,您可以将任何在short(-32768到32767)范围内的int文字分配给short变量。
short s1 = 12905;   // ok
short s2 = -11890// ok

字节变量的值始终可以分配给short变量,因为byte数据类型的范围在short数据类型的范围内。将值从int或long变量分配给short变量的所有其他规则与字节变量的规则相同。

1.4.1。 Short Wrapper类

Java有一个称为类Short(纸币上壳体在短S),它定义了两个常量来表示短数据类型的最大值和最小值,Short.MAX_VALUEShort.MIN_VALUE

short max = Short.MAX_VALUE;
short min = Short.MIN_VALUE;

1.5。char数据类型

  • char数据类型是16位无符号 Java原语数据类型。
  • 它代表Unicode字符
  • 请注意,char是无符号数据类型。因此,char变量不能具有负值。
  • char数据类型的范围是0到65535,与Unicode集的范围相同。
  • 字符文字表示char数据类型的值。
char c1 = 'A';
char c2 = 'L';
char c3 = '5';
char c4 = '/';
1.5.1。字符转义序列

字符文字也可以表示为字符转义序列。字符转义序列以反斜杠开头,后跟一个字符,并且两者都用单引号引起来。

共有八个预定义的字符转义序列,如下所示:

字符转义序列 描述
‘\ n’ 换行
‘\ r’ 回车
‘\F’ 换页
‘\ b’ 退格键
‘\ t’ 标签
‘\\’ 反斜杠
‘\” 双引号
‘\” 单引号

这些只是Java中的八个字符转义序列。您不能定义自己的字符转义序列。

1.5.2。Unicode转义序列

字符文字也可以表示为形式的Unicode转义序列'\uxxxx',在这里,(紧跟一个小写U A反斜杠)表示Unicode转义序列的开始,并且XXXX表示恰好四个十六进制数字。

char c1 = 'A';
char c2 = '\u0041'// Same as c2 = 'A'

2.浮点数据类型

包含小数部分的浮点数称为实数,例如3.25、0.49,-9.19等。

数字如何存储在内存中

将实数转换为二进制表示形式时,计算机还必须存储数字中小数点的位置。有两种策略可以将实数存储在计算机内存中。

  1. 定点数字格式 –仅存储数字的二进制表示形式,并假定在该点之前和之后始终有固定数量的数字。一个点在数字的十进制表示形式中称为小数点,在二进制表示形式中称为二进制点。点的位置始终固定在数字中的表示类型称为“定点”数字格式。
  2. 浮点数格式 –存储实数的二进制表示形式以及该点在实数中的位置。由于在这种实数表示中,点之前和之后的位数可能会有所不同,因此我们说该点可以浮动。这种表示形式称为“浮点”格式。

与定点表示相比,浮点表示速度较慢且准确性较低。但是,与定点表示相比,浮点表示可以在相同的计算机内存中处理更大范围的数字。

Java支持“浮点”数字格式。

浮点数字
IEEE-754 32位单精度浮点数

Java有两种浮点数字数据类型:floatdouble

2.1。浮动数据类型

float数据类型使用32位存储IEEE 754标准格式的浮点数单精度浮点数)。它的实数大小可小至1.4 x 10 -45,大至3.4 x 10 38(约)。该范围仅包括幅度。它可以是正面的或负面的。

所有以’f’或’F’结尾的实数都称为float常量

float f1 = 8F;
float f2 = 8.F;
float f3 = 8.0F;
2.1.1。正负无穷大

float数据类型定义两个无限性:正无穷大和负无穷大。例如,分割的结果2.5F通过0.0F一个浮动正无穷大而除以的结果2.5F通过-0.0F一个浮动负无穷大。

2.1.2。NaN(非数字)

未对float上的某些操作结果进行定义。这些结果由称为NaN(非数字)的float数据类型的特殊值表示。

Float类定义三个常量,分别表示float数据类型的正无穷大,负无穷大和NaN。还有两个常量,它们代表可以存储在float变量中的最大值和最小值(大于零)。

Float.POSITIVE_INFINITY - Positive infinity of type float.
Float.NEGATIVE_INFINITY - Negative infinity of type float.
Float.NaN - Not a Number of type float.
Float.MAX_VALUE - The largest positive value that can be represented in a float variable.
Float.MIN_VALUE - The smallest positive value greater than zero that can be represented in a float variable。
请注意,可以将所有整数类型(int,long,byte,short和char)的值分配给float数据类型的变量,而无需使用显式强制转换,但必须先对float值进行强制转换,然后再将其赋给任何整数数据类型int,long,byte,short或char的变量。

2.2。双重数据类型

double数据类型使用64位以“ IEEE 754标准格式”存储浮点数。根据IEEE 754标准,以64位表示的浮点数也称为双精度浮点数

所有实数都称为双立即数。双字面量可以选择以’d’或’D’结尾,例如19.27d。但是,后缀d或D在双字面量中是可选的。也就是说,19.27d和19.27d都代表相同的双字面量。

double d1 = 8D
double d2 = 8.;
double d3 = 8.0;
double d4 = 8.D;

像float数据类型一样,double数据类型定义了最大值,最小值,两个整数和一个NaN值。

Double.POSITIVE_INFINITY - Positive infinity of type double.
Double.NEGATIVE_INFINITY - Negative infinity of type double.
Double.NaN - Not a Number of type double.
Double.MAX_VALUE - The largest positive value that can be represented in a double variable.
Double.MIN_VALUE - The smallest positive value greater than zero that can be represented in a double variable。

3.布尔值

3.1。布尔数据类型

布尔数据类型只有两个有效值:truefalse。这两个值称为布尔文字。您可以将布尔文字用作

boolean done; // Declares a boolean variable named done
done = true// Assigns true to done

需要注意的重要一点是,布尔变量不能强制转换为其他任何数据类型,反之亦然。Java没有指定布尔数据类型的大小。它的大小由JVM实现决定。通常,布尔数据类型的值在内部以字节存储。

这就是java中可用的8种原始数据类型的全部。

saigon has written 1445 articles

Leave a Reply