Java中的数据类型:原始和非原始数据类型
已发表: 2020-12-01目录
介绍
在任何编程语言中,数据类型都是数据的归属,它让计算机或编译器知道程序员想要如何分配数据。 数据类型在赋值时对变量或函数添加了限制。
这些数据类型定义了数据的行为,例如可以存储该类型值的方式以及可以对数据执行的操作。 让我们看看java提供的所有数据类型。
原始数据类型
原始数据类型不能进一步拆分为更简单的数据类型。 Java 提供了 8 种原始数据类型,让我们来探索一下!
字节
字节是一种整数类型,它存储从 -128 到 127 的整数,如果您处理小数字,这可以解决内存限制问题,因为它只需要 1 个字节的内存。 可以使用“byte”关键字声明字节变量。 将高于 127 的值分配给字节会引发“不兼容类型”错误。
| 字节n1 = 98 ; 系统。 出来。 打印(n1); |
上面的代码片段按预期打印 98。
短的
short 是一种整数类型,它存储从 -32768 到 32767 的整数,它从磁盘消耗 2 个字节的内存。 可以使用“short”关键字声明一个短变量。 将大于 32767 的值分配给短变量会引发“类型不兼容”错误。

| 短n1 = 9876 ; 系统。 出来。 打印(n1); |
上面的代码段打印 9876 作为输出。
诠释
int 是一个整数类型,存储范围从 -2147483648 到 2147483647 的整数,它在磁盘中消耗 4 个字节的内存。 通常,程序员更喜欢使用 int 来声明存储数值的变量。 如果尝试分配大于范围的值,Java 编译器会抛出“不兼容类型”错误。
| 诠释n1 = 987654 ; 系统。 出来。 打印(n1); |
上面的代码段打印 987654 作为输出。
长
现在,这是一种有趣的数据类型,它消耗磁盘中的 8 字节内存。 它是一个整数类型,存储范围从 -9223372036854775808 到 9223372036854775807 的整数,需要花费大量时间来读取该范围。
这在我们执行的操作的 int 数据类型溢出时使用。 请记住,我们需要在分配时以“L”结束值。
| 长n1 = 987654321098765L ; 系统。 出来。 打印(n1); |
如预期的那样,上面的代码段打印 987654321098765。
漂浮
Float 是一种浮点数据类型,这意味着它可以存储包括十进制精度在内的值。 让我们假设您已经开发了一个代码来记录您的所有支出,但是您非常严格并且想要跟踪您花费的每一分钱。 在这种情况下, int 将无法完成这项工作,因为 int 只能存储整数。
我们需要一个浮点数据类型来完成这个任务。 一个浮点数可以存储从 3.4e-038 到 3.4e+038 范围内的小数,它最多可以存储 7 位小数精度。 请记住,您应该以“f”结束该值。
| 浮动n = 98.76f ; 系统。 出来。 打印(n); |
上面的代码段打印 98.76 作为输出。
阅读: JavaBeans 属性和优势:您应该如何利用?
双倍的
Double 类似于浮点数,但顾名思义,在十进制精度的情况下,它是浮点数的两倍。 它可以有 15 位的十进制精度,可以存储从 1.7e-308 到 1.7e+308 的小数。 请记住,您必须以“d”结束值。
让我们通过一段代码来了解 float 和 double 之间的区别。
| 公共类测试{ 公共静态无效主要(字符串args []) { 浮动a1 = 1.f / 70 ; 浮动b1 = 0 ; 双a2 = 1.d / 70 ; 双b2 = 0 ; 浮动f1 = 1f ; 双f2 = 1d ; for ( int i = 0 ;i < 490 ;i ++ ){ b1 = b1 + a1; b2 = b2 + a2; 如果(i > 1 && i <= 50 ){ ![]() f1 = f1 * i; f2 = f2 * i; } } 系统。 出来。 println(b1); //第1行 系统。 出来。 println(b2); //第2行 系统。 出来。 打印(f1); //第3行 系统。 出来。 打印(f2); //第4行 } } |
手动计算表达式“(1/70)*490”给出了 7 作为答案,但是在 java 中使用 float 和 double 执行它会给出不同的答案。 在上面的代码片段中,一个 float 变量和一个 double 变量被初始化为 1/70,并且将此值添加到另一个变量 490 次应该得到 7 作为答案。
在运行上述代码段时,第 1 行打印 6.9999795 具有 7 位十进制精度,而第 2 行打印 6.999999999999978 具有 15 位十进制精度。 因此,如果浮点数不能为您提供准确的小数精度,那么您可以选择双精度。 此外,float 更有可能达到无穷大,因为与 double 相比,float 的范围更小。
例如,如果您存储一个相当大的数字的阶乘,那么该变量将达到无穷大。 从上面的代码片段中,我们可以看到有两个变量用于存储 50 的阶乘,在我们打印结果时,第 3 行打印无穷大,第 4 行打印 3.0414093201713376E64,所以如果浮点数不符合您的数值范围然后您可以选择双倍。
float 和 double 都可以用作带有“e”的科学数字,其中“e”表示 10 的幂。例如,3e2f 相当于浮点数据类型的 300.0,3e4d 相当于双精度数据类型的 30000.0。
布尔值
布尔数据类型只能取真假两个值,在java中使用boolean关键字声明。 这种数据类型通常用作标记变量,用于跟踪我们在代码中所做的更改。 例如,如果一个数字可以被 2 整除,则将该标志设置为 true,否则设置为 false。
| 布尔标志= true ; 布尔b1 =假; 系统。 出来。 打印(标志); //打印为真 系统。 出来。 println(b1); //打印错误 |
字符
char 数据类型用于存储单个字符,该数据类型可以使用 char 关键字声明。 请记住,我们必须在分配时将字符括在单引号中,它可以将小写和大写字符存储在 char 数据类型中。
在 char 数据类型中存储多个字符会引发错误。 此外,关于 char 数据类型还有一个有趣的事实,即,将 char 类型转换为整数会存储该字符的 ASCII 值,反之亦然。
| 字符c1 = ' a ' ; 字符c2 = 66 ; 系统。 出来。 打印(C1); //第1行 系统。 出来。 打印(c2); //第2行 系统。 出来。 println(( int )c1); //第3行 |
在上面的代码段第 1 行中,按预期打印“a”作为输出。 第 2 行打印 'B' 作为输出,因为 66 指的是 ASCII 表中的 B。 第 3 行打印 97 作为输出,因为它是 'a' 的 ASCII 值。
但是如果我们想要存储多个字符呢? 我们将在接下来的段落中讨论它们。
另请阅读:初学者的 17 个有趣的 Java 项目想法和主题
非原始数据类型
java中的非原始数据类型也称为引用类型,因为它们引用对象。 非原始数据类型是由程序员创建的,它们不是预定义的。 由于非基元被称为对象,因此可以为它们分配 null,这在基元类型中不是这种情况。
与原始数据类型不同,非原始数据类型必须以大写字母开头。 所有非原始数据类型的大小都相同,并且在磁盘上消耗相同的内存,这在原始数据类型的情况下是不同的。
细绳
字符串是 java 中的一种特殊数据类型,它与程序员定义非原始类型的事实相矛盾。 字符串数据类型是一种非原始数据类型但在java中是预定义的,也有人称其为特殊的第九原始数据类型。
这解决了一个char不能存储多个字符的情况,使用字符串数据类型来存储字符序列。 请记住,您需要将文本序列括在双引号中。
| 字符串s1 = “你好” ; 系统。 出来。 println(s1); |
上面的代码片段将按预期打印“Hey There”。
数组、类、接口等是 java 中很少有的其他非原始数据类型。
如何计算数据类型的范围?
看过原始数据类型的范围后,您可能会怀疑我们是否需要记住这一点? 好吧,答案是否定的。 但是我们需要记住每种数据类型的大小,然后我们才能计算出该数据类型的范围。
例如,字节数据类型占用磁盘上 1 个字节的内存。 在编译器级别,所有数据都以位的形式存储,一个字节有 8 位。 现在 8 位中的一位用于指定数字的符号,其余 7 位可以存储实际数字,所以我们使用 7 位可以存储的最大数字是 128。
因此,-128 是字节数据类型的下限,+127 是上限,因为零是负数之后数轴上的第一个数字。
同样在浮点类型中,数据被分成 3 部分有符号位、尾数和指数。 尾数部分用于存储十进制精度,float 有 23 个尾数位加一个隐藏位,double 有 52 个尾数位加一个隐藏位。
对于浮点数,log(2^24)/log(10) 大约等于 7,因此 7 位十进制精度。
对于双精度,log(2^53)/log(10) 大约等于 15,因此 15 位十进制精度。

报名参加世界顶尖大学的软件工程课程。 获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。
结论
我们已经看到了 java 中的各种数据类型,了解了原始数据类型和非原始数据类型,原始数据类型和非原始数据类型的区别。 通过示例代码片段了解数据类型声明的基本知识。
了解了如何计算整数数据类型的各种数据类型的范围,如何计算浮点数据类型的小数精度。
现在您已经了解了 java 中的各种数据类型,开始探索它们吧!
如果您有兴趣了解有关 Java、OOP 和全栈软件开发的更多信息,请查看 upGrad 和 IIIT-B 的全栈软件开发执行 PG 计划,该计划专为工作专业人士设计,提供 500 多个小时的严格培训, 9 个以上的项目和任务、IIIT-B 校友身份、实用的实践顶点项目和顶级公司的工作协助。


