【发布时间】:2019-02-13 08:00:54
【问题描述】:
作为一名 Java 初学者,我被介绍给枚举,这让我对类型声明感到非常困惑。我想分享我所知道的,这样你们中的一个人可能会发现我认为的问题。
我了解到有两种数据类型,原始数据类型和对象数据类型。声明变量时,先写datatype,再写变量的identifier。
当我声明一个数据类型 int 变量时,我的脑海里有以下想法:
int a = 1; int as datatype references to the primitive integer datatype.
当我声明一个数据类型 Integer 变量时,我脑子里有以下想法:
Integer b = 1; Integer as datatype references to the object datatype (that in this case is an instance of the class integer)
当我声明一个枚举器变量时,我脑子里有以下想法:
enum C {EXAMPLE1, EXAMPLE2}; No clue what enum references to.. Is it an object datatype and an instance of class enum? If so, where is the capital letter E in enum.
所以问题就从这里开始了。我了解到 enum 不是原始数据类型,所以唯一的可能性是它是一个对象。但我也了解到,将类的对象声明为数据类型意味着标识符应该以大写字母开头,如 Integer、Boolean 等。但是,我可以声明一个没有大写字母的枚举。这是否意味着它不是一个对象?或者枚举器只是类之类的关键字,而不是我假设的变量数据类型。
如果 enum 不是变量数据类型,而是像 class 这样的关键字,那么我想知道以下思维方式是否正确:
enum Test {EXAMPLE1, EXAMPLE2}
Test e = Test.EXAMPLE; Does Test reference to the object datatype? (That
in this case is an instance of the enumerator Test)
如果 Test 是枚举器 Test 的一个实例,这怎么可能?我只认为可以从类中创建对象,但我也读过一些关于枚举器中的构造函数的内容。
我一直在寻找这个问题的答案几个小时,但没有成功。我希望我现在还没有弄乱你的头。但我真的希望有人能理解这一点并真正帮助我。
【问题讨论】:
-
想问一下:这和 C# 有什么关系?
-
顺便说一句,大写只是一种约定,实际上并没有任何作用。
-
我不太熟悉 C#,但我经常听说 C# 和 Java 在语法上是相关的。懂 C# 的人可能也会理解我的问题并帮助我。
-
对于 Java/C# 而言,不幸的是枚举是它们非常不同的少数领域之一。
-
在 Java 中,枚举是具有称为序数的后备整数的对象。在 C# 中,枚举基本上是一个命名的 int(它实际上可以是任何原始数据类型)。 C# 枚举更类似于 C/C++ 的枚举,不同之处在于它们的名称被存储。