术语非原始类型和对象类型有什么区别?

What is the difference between the terms non-primitive type and object type?

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

当我阅读有关 C# 的内容时,我通常会看到描述为 原始类型非原始类型?[=10= 的变量]

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

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

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

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

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

在Java中:

原始变量分为8种数据类型:boolean,byte,short,int,long,float,double,char.Every原始变量有自己的范围内存中 space 个。

引用变量,引用对象(Array、String、ArrayList、StringBuilder,...),与所引用对象的 space 无关。

差异:

1.references 类型可以被指定为 null /primitives dont.

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

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

4.primitives 声明以 lowercase/java 类 和
开头 大写