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

时间:2016-05-28 21:10:00

标签: java c# object types primitive

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

当我读到C#时,我通常会看到描述为基本类型非基本类型的变量?

术语对象类型非基本类型之间有什么区别?

2 个答案:

答案 0 :(得分:5)

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

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

获取C#原语列表
var primitives = typeof(int).Assembly.GetTypes().Where(type => type.IsPrimitive).ToArray();

如果你想要这样一个更合适的二分法,那就是价值类型与参考类型。当您开始考虑这种差异时,您可以包括诸如枚举类型和其他值类型之类的内容,例如结构。

答案 1 :(得分:0)

Java中的

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

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

<强>差异:

1.references类型可以被称为null / primitives。

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

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

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