为什么Java原始数据类型不是Java数据类型?

我有一个问题,为什么Java原始数据类型只是被称为“Java数据类型”或类似的东西?

因为Java拥有的数据类型多于基元 。 原始数据类型是:

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

非原语的数据类型是引用数据类型,它是对象的引用。

一些例子是:

  • String
  • Integer
  • ArrayList
  • Random
  • JFrame

以下是两种类型之间差异的简单示例:

 int i1 = 10; Integer i2 = Integer.valueOf(10); 

int i1是原始数据类型int的变量,原始int值为10。

Integer i2是一个变量,其引用数据类型为Integer ,引用包含值10Integer对象。

替代文字

区分它们和物体 。

因为Java中有两类类型。

从Java语言规范,第4章:类型,值和变量 :

Java编程语言的类型分为两类:基本类型和引用类型。 基本类型(§4.2)是boolean类型和数字类型。 数值类型是整数类型byteshortintlongchar ,浮点类型是floatdouble 。 引用类型(第4.3节)是类类型,接口类型和数组类型。 还有一种特殊的null类型。 对象(第4.3.1节)是动态创建的类类型实例或动态创建的数组。 引用类型的值是对象的引用。 所有对象(包括数组)都支持Object类(第4.3.2节)的方法 。 字符串文字由String对象表示(§4.3.3) 。

将它们与对象数据类型区分开来。

因为引用类型也可以被认为是数据类型。 基元被认为是价值类型。 两者都可以被认为是数据类型。

要了解原因,我认为您需要查看除Java之外的编程语言。 例如:

  • 在C ++中,有原始数据类型( intdouble等),构造数据类型( struct等)和对象/引用类型。

  • 在Ada中,存在原始数据类型,以及从基元类型派生的其他数据类型; 例如范围类型。

因此,我的理解是Java数据类型被描述为“原始数据类型”,以将它们放入其他语言的上下文中。 它们是“数据类型”,因为它们没有对象标识,并且它们是“原始的”,即特定类型由Java语言定义(和基础)。

对象也是变量,因此术语“原始”用于区分这些类型。

非原始类型称为java引用类型,它们的名称以大写字母开头。 例如:Integer,Float等。对于非原语,我们可以创建实例。