类和类型之间的区别(Difference between class and type)

2019-09-03 22:04发布

作为新到Java,我类型的概念之间的混淆。 例如,应该对象"Hello World!" 属于类型 String String ? 或者,也许两者兼而有之?

Answer 1:

类是一类。 一个接口是一个类型。 基元是一种类型。 数组是一种类型。

因此,每一种类型的也是一个类(包括枚举常数),的接口,一个原语,或阵列。

有两种不同的类型类别:原始类型和引用类型:

  • 原语类型的变量总是认为,相同类型的原始值。 这样的价值只能通过赋值操作对变量进行更改。
  • 引用类型的变量总是保持对一个对象的引用的值。 所有对象,包括数组,支持类的方法Object 。 引用类型是类类型(包括枚举类型),接口类型,和数组类型。

每个数据都有一个类型定义其结构,即有多少内存占用,它是如何布局,更重要的是,你如何与它进行交互。

原语类型的例子:

  1. int
  2. float
  3. char
  4. boolean

类类型的例子:

  1. String
  2. Integer
  3. Boolean
  4. ArrayList
  5. StringBuilder

接口类型的例子:

  1. Collection
  2. List
  3. Map
  4. Serializable

阵列类型的例子:

  1. int[]
  2. String[]
  3. Integer[][][]

基本上,任何可以参考的变量有一个类型,而类是一类的类型。

更多资讯: http://docs.oracle.com/javase/specs/jls/se8/html/jls-4.html



Answer 2:

“类型”是更具包容性的范畴。 在Java中的变量可以有三种类型:8“原始”类型,如int和float,接口和类。 值(相对于变量)可以是原语类的实例。



Answer 3:

“类型”定义“它是什么类型的数据”

例如: “世界你好” 是一个字符串 - > “Hello World” 的类型是STRING型(字符串是没有什么不同的INT A premetive数据..所以我们可以说的 “Hello World” 是一个字符串类类型)

图10是一个INT - >图10是一个整数数据类型。



Answer 4:

TLDR -类是Java中的类型之一。

注 - 要充分认识答案,你必须对自己在Java泛型一点想法。


理解上的差异,让我们先了解一个类型是Java的东西。

根据JLS SE 10 ,

有两种类型的Java编程语言: 基本类型 ( 4.2节 )和引用类型 (第4.3节)。

什么是基本类型?

一个)的积分类型是字节,短,int和长 ,其值是8位,16位,32位和64位带符号的二进制补码整数,分别和焦炭,其值是16位表示UTF-16代码单元无符号整数(§3.1)。

b)在浮点类型是浮点 ,其值包括32位IEEE 754浮点数,和 ,其值包括64位IEEE 754浮点数。

c)在布尔类型正好有两个值:true和false。

现在,让我们来什么是引用类型?

有四种类型的参考类型: 类类型 ( 第8.1节 ), 接口类型 ( 第9.1节 ), 类型变量 ( §4.4 )和数组类型 ( §10.1 )。

让我们来讨论一个接一个。

如果你看到在JLS, 等级定义如下:

类声明指定一个新的命名引用类型。

有两种类声明的: 普通类的声明和enum声明

ClassDeclaration:
NormalClassDeclaration 
EnumDeclaration
NormalClassDeclaration:
{ClassModifier} class TypeIdentifier [TypeParameters] [Superclass] [Superinterfaces] ClassBody

您将看到[TypeParameters]这表明该类类型包括那些泛型类了。

class Example<T>{

}

类类型将被称为Example

总之,类类型涵盖了我们的枚举,我们常规(非通用)类,如String等和我们的泛型类了。

同样,我希望接口和数组类型也很清楚。 通过数组类型,我们的意思是像int[] String[]等。

让我们走到了最后一部分 - 类型的变量。 这些是什么 ?

A型变量是用作类,接口,方法和构造体类型不合格的标识符。

让我们在它下面的JLS的例子理解。

class Test {
    <T extends C & I> void test(T t) {  
        t.mI();           // OK
        t.mCPublic();     // OK 
        t.mCProtected();  // OK 
        t.mCPackage();    // OK

    } 
}

你看,在方法参数的对象类型的T 。 是的,这T是类型可变的并且/可作为一个参考。 是的。 (无法理解这种奇怪的例子 - 了解什么是Java泛型方法)

这样就完成了答案。



文章来源: Difference between class and type
标签: java class types