La différence entre la classe et le type de

Étant nouveau pour Java, je suis confus entre les concepts de classe et de type. Par exemple, si l'objet "Hello World!" appartiennent à la type String ou classe String? Ou peut-être les deux?

79
demandé sur Paul Bellora 2013-05-17 07:04:33

4 réponses

Une classe est un type. Une interface est un type. Une primitive est un type. Un tableau est un type.

Par conséquent, chaque type est aussi soit une classe (y compris une constante enum), une interface, une primitive ou un tableau.

, Il existe deux catégories distinctes de types: les types primitifs et les types référence:

  • une variable de type primitif contient toujours une valeur primitive de ce même type. Une telle valeur ne peut être modifiée que par des opérations d'affectation variable.
  • Une variable de type référence contient toujours la valeur d'une référence à un objet. Tous les objets, y compris les tableaux, prennent en charge les méthodes de la classe Object. Les types de référence sont les types de classe (y compris les types enum), les types d'interface et les types de tableau.

Chaque élément de données a un type qui définit sa structure, à savoir la quantité de mémoire qu'il prend, comment il est disposé, et plus important encore, comment vous pouvez interagir avec elle.

Exemples de primitives types:

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

Exemples de types de classes:

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

Exemples de types d'interface:

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

Exemples des types de tableaux:

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

Fondamentalement, tout ce que vous pouvez appeler une variable a un type, et les classes sont une sorte de type.

Plus d'infos ici: http://docs.oracle.com/javase/specs/jls/se8/html/jls-4.html

106
répondu Brandon 2016-12-30 15:13:10

"Type" est la catégorie la plus inclusive. Les Variables en Java peuvent avoir trois types de types: les 8 types "primitifs" comme int et float, les interfaces et les classes. Les valeurs (par opposition aux variables) peuvent être des instances primitives ou de classe.

3
répondu Lee Daniel Crocker 2013-05-17 03:12:42

"Type" définit "quel type de données il s'agit"

Ex: "hello world" est une chaîne -- > "hello world" est un type de chaîne (String N'est pas une donnée prémétive contrairement à int .. donc, nous pouvons dire "hello world" est un type de classe de chaîne)

10 est un int --> 10 est un type de données entier.

2
répondu Satya 2013-05-17 03:54:41

TLDR - Class est L'un des types de Java.

Note-Pour bien comprendre la réponse, vous devez avoir une petite idée des génériques en Java.


Pour comprendre la différence, comprenons d'abord ce qu'est un Type en Java.

Selon JLS SE 10 ,

, Il existe deux types de types de dans le langage de programmation Java: types primitifs (§4.2) et référence types (§4.3).

Qu'est-ce que le type primitif ?

A) Les types intégraux sont byte, short, int et long, dont les valeurs sont 8 bits, 16 bits, 32 bits et 64 bits ont signé deux entiers de complément, respectivement, et char, dont les valeurs sont des entiers non signés de 16 bits représentant des unités de code UTF-16 (§3.1).

B) les types à virgule flottante sont float , dont les valeurs incluent le 32 bits IEEE 754 nombres à virgule flottante, et double , dont les valeurs incluent 64 bits IEEE 754 nombres à virgule flottante.

C) le typebooléen a exactement deux valeurs: true et false.

Maintenant, venons-en à ce qu'est le type de référence ?

, Il existe quatre sortes de types de référence: types de classe (§8.1), interface types (§9.1), les variables de type (§4.4), et type de matrice (§10.1).

Discutons un par un.

Si vous voyez comment dans JLS , Classe est définie comme ceci :

Une déclaration de classe spécifie un nouveau type de référence nommé.

, Il existe deux types de déclarations de classe: déclarations de classe normale et déclarations enum .

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

Vous voyez que [TypeParameters], Cela montre que le type de classe inclut ceux-ci classes génériques aussi.

class Example<T>{

}

Le le type de classe sera appelé Example

En bref, un type de classe couvre nos énumérations, nos classes régulières (non génériques) comme String etc et nos classes génériques aussi.

De même, j'espère que les types d'interface et de tableau sont également clairs. Par type de tableau nous entendons comme int[], String[] etc.

Venons-en aux dernières variables de type Partie. Quels sont-ils ?

Une variable de type est un identifiant non qualifié utilisé comme type dans la classe, interface, méthode et corps du constructeur.

Comprenons par l'exemple dans le JLS ci-dessous.

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

    } 
}

Vous voyez que votre objet dans le paramètre method est de type T. Oui, ce T est une variable de Type et est / peut être utilisé comme référence . Oui, il est. (Impossible de comprendre cet exemple étrange-apprendre quelle est la méthode générique en Java)

Ceci complète la réponse.

1
répondu Breaking Benjamin 2018-07-15 02:22:29