我对 Java 中的数据类型感到困惑。我在 Internet 上看到了很多将 Java 中的数据类型表示为树的图像,这让我对过去的想法感到犹豫。这些树的示例如下所示:
因此,在另一篇 SO帖子中,Buhake Sindi 指出:
Boolean 是原始类型的包装器
按照之前 Java 中数据类型的树表示,我的问题是:
不,原语的包装器不是原语。这就是它们的重点:当需要对象引用而不是基元(例如在 a 中)时,它们用于包装基元List。
在那个树图中,“Boolean”和“Integer”不是类/类型名称,它们只是标签(就像“浮点”一样)。
Object 适合“非原始”顶部的那棵树。
因此,例如,包装器将属于非原始类型:
数据类型
/ \
/ \
/ \
/ \
原始类型非原始类型(基类:对象)
//\
//\
数字类型原始包装类型(等)
//| \
//| \
整数类型 Char Integer Boolean
/
/
字符
(显然这是非常不完整的。)
据我了解,
Object是一个内存区域,可以包含 Java 中的任何类型;从原语到程序员创建的类。
不,它不是内存区域。这是一种。
因此,
Object可能包含原始和非原始数据类型。
不,类型Object(或其任何子类型)的变量、实例成员或参数只能包含对象引用,而不能包含像int或 之类的基元char。这就是我们为原语提供包装器的原因,因此我们可以将它们(通过包装器)存储在需要对象引用的地方。
另请注意,该图以另一种方式具有误导性:“浮点”不应位于“积分”下。在计算机科学中,“整数类型”是整数(在数学中,它比这更复杂)。这就是 JLS 将NumericType拆分为IntegralType和FloatingPointType ( ref ) 的原因。
并且 char是Java 中的整数类型。
FWIW,我对该草图的粗略通过看起来像这样:
希望决赛不会被压扁和丑陋。:-) 请注意,我在各处重复“类型”以避免出现使用类名的情况,并且当我使用关键字或类名时,我使用了字体(就像您原来的那样)来标注。
| 归档时间: |
|
| 查看次数: |
1290 次 |
| 最近记录: |