Java的原始类型是什么?

42

Java中的原始类型是什么?

原始类型和引用类型之间有什么区别?

Java有多少种原始类型,分别是什么?


除了下面的答案,了解原始数据类型变量和标量变量之间的区别可能也有所帮助,因为有时候这种区别并不明显:https://dev59.com/IWw15IYBdhLWcg3wbLLU - Ben Pearson
1
只包含值的数据类型称为原始数据类型(byte、short、int等)。而包含引用的其他数据类型称为引用数据类型(Integer、Boolean、String等...)。 - Hari Das
http://javaseeeedu.blogspot.com/2015/08/data-types-in-java.html - Nisal Edu
请查看此链接:https://smugjava.blogspot.in/2017/11/data-types-in-java.html。 - Jameer Mulani
14个回答

53
在Java中,每个变量都有一个在源代码中声明的类型。类型分为两种:引用类型和基本类型。引用类型是对象的引用。基本类型直接包含值。有8种基本类型:
  • byte(字节)
  • short(短整数)
  • int(整数)
  • long(长整数)
  • char(字符)
  • float(浮点数)
  • double(双精度浮点数)
  • boolean(布尔值)

4
同时,对于 Object 的引用是按值传递的。 - Sufiyan Ghori
2
@sufiyan:没错,但这与这个问题有什么关系呢? - Michael Borgwardt
2
没有特别的要求,我只是希望未来的读者不要因为这个语句“对象的引用类型”而感到困惑,因为很多初学者会根据这个语句认为Java是按引用传递的。 - Sufiyan Ghori

8

“类型”是什么意思?

在现实世界中,有不同的“类型”。例如:有许多不同的“车辆类型”:“跑车”用于快速驾驶,“皮卡车”用于携带工具,“卡车”用于运输大量货物,而豪华轿车则用于奢华旅行。

同样地,在Java中,您可以拥有不同的“数据类型”,这些类型具有不同的用途。例如:数字(用于加/减等),“字符串”用于传达单词和字母。您不能使用字母进行加法-这根本没有意义,也不能使用数字编写句子。

原始类型与引用类型-是什么意思?有什么区别?

现在有一些基本的“数据类型”。这些已由Redmond / Sun的专家创建。这些称为“原始”Java类型,并且它们在自身内部存储值。那是什么意思?最好通过示例来解释:

原始类型示例

如果我给你一张50美元的纸币,那么这张纸币本身就价值50美元。其价值存储在纸币本身中。

原始类型与引用类型对比

想象一下,如果我不是给你50美元,而是给你一张纸,上面写有一个保险箱的地址。这张纸本身并不值50美元,但它指向一个地址,您可以在那里获得50美元。这张纸基本上是一种“引用”类型,因为它不存储任何值,并且本身只是指向某些地址。

但是我可以给您任何地址:飞机、城堡、雨林:任何东西!

摘要

您不能从口袋里拿出一架飞机或新干线列车交给别人:您只能将其地址交给他们。与拥有50美元或任何货币类型相比:实际物质在您的口袋中。

以上简述了原始类型和引用类型之间的区别。

(使用幽默的类比来帮助您理解和记忆。)


6
Java语言规范中的第四章类型、值和变量

Java编程语言是一种静态类型语言,这意味着每个变量和每个表达式在编译时都有一个已知的类型。

Java编程语言也是一种强类型语言,因为类型限制了变量[...]可以持有或表达式可以产生的值,限制了支持这些值的操作,并确定了操作的含义。强静态类型有助于在编译时检测错误。

Java编程语言的类型分为两类:原始类型和引用类型。原始类型[...]是布尔类型和数值类型。数值类型是整型byte、short、int、long和char,以及浮点类型float和double。引用类型[...]是类类型、接口类型和数组类型。还有一种特殊的null类型。对象[...]是类类型的动态创建实例或动态创建数组。引用类型的值是对象的引用。所有对象,包括数组,都支持类Object的方法[...]。


4

Java中的原始类型是非类类型。它们仅存储值。

double d = 3.0;
d.intValue();  //compiler error!
Double d2 = new Double(3.0);
d2.intValue();  //works!

3

有引用类型、基本类型和 void

对于每个基本类型(和 void),都有一个包装类型,定义了一个常量叫做 TYPE,它具有基本类型的类。

编译器获取基本类型的类的一种方法是使用 .class 表示法。例如:

Class<Integer> intClass = int.class; // == Integer.TYPE
Class<Void> voidClass = void.class; // == VOID.TYPE

1

它们是非类类型,仅保存一个值。当传递原始变量时,您传递的是值本身,而不是该值的引用。


1

Java支持基本数据类型int、double、float等八种。

这些是原始类型数据或基本类型的数据。

boolean、char、byte、short、int、long、double、float


1

原始类型不是类,但可以用于存储数字和字符等值。

  • byte(字节)
  • short(短整型)
  • int(整型)
  • long(长整型)
  • char(字符型)
  • float(单精度浮点型)
  • double(双精度浮点型)
  • boolean(布尔型)

1

数据类型有两种,原始数据类型和对象引用。 原始数据类型不是对象,它们仅存储实际值,而对象引用变量存储它们所引用对象的地址。


1
任何编程语言内置的数据类型都被称为原始数据类型。作者们通常会交替使用primitive、built-in或basic data types这些词语。在Java中,原始数据类型由Java编程语言提供作为基本构建块,因此被称为Java的原始类型。Java还允许程序员定义自己的类型(用户定义类型)。对于原始类型,Java具有内置支持。原始类型由Java语言预定义,并用保留关键字命名。Java支持8种内置数据类型,程序员无法修改它们的基本行为和支持的操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接