【问题标题】:What is the difference between the terms non-primitive type and object type? [closed]术语非原始类型和对象类型有什么区别? [关闭]
【发布时间】:2016-09-26 23:46:49
【问题描述】:

当我阅读 Java 时,我通常会看到变量被描述为 原始类型对象类型

当我阅读 C# 时,我通常会看到将变量描述为原始类型非原始类型

对象类型非原始类型这两个术语有什么区别?

【问题讨论】:

标签: java c# object types primitive


【解决方案1】:

这种混淆的部分原因可能在于,在 C# 中,(mostly) everything inherits from Object。以相同的方式引用 Object 类型,将引用语言中的所有类型,并且基本上是无用的。

在 C# 中,基本类型为 Boolean、Byte、Char、Double、Int16、Int32、Int64、IntPtr、SByte、Single、UInt16、UInt32、UInt64、UIntPtr。这些类型仍然从对象继承,尽管语言对它们的处理方式不同。有一些类型从对象继承,但它们不是您认为的原语(即接口)。可以使用此代码获取 C# 原语列表,取自here

var primitives = typeof(int).Assembly.GetTypes().Where(type => type.IsPrimitive).ToArray();

如果您想要这样的事情,更合适的二分法是值类型与引用类型。当您开始考虑这种差异时,您可以包含诸如 Enum 类型和其他值类型(如结构)之类的内容。

【讨论】:

  • 人们还应该考虑装箱/拆箱
【解决方案2】:

在 Java 中:

原始变量分为 8 种数据类型:boolean、byte、short、int、long、float、double 和 char。每个原始变量在内存中都有自己的空间范围。

引用变量,引用对象(Array,String,ArrayList,StringBuilder,...),与引用对象的空间无关。

区别:

1.references 类型可以分配为 null /primitives dont.

2.references 类型可用于在不指向 null/primitives 使用字面量时调用方法。

3.references 类型具有所有相同的大小/在原语中取决于
数据类型

4.primitives 声明以小写/java 类开头,
大写

【讨论】:

    猜你喜欢
    • 2014-03-22
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    • 2016-01-02
    • 2017-07-16
    • 2021-06-04
    • 2016-01-21
    • 1970-01-01
    相关资源
    最近更新 更多