Vous pouvez le faire en Integer n = 9;raison de l'autoboxing (à moins que vous n'utilisiez une très ancienne version de java)
Alderath
Réponses:
320
intest un type primitif. Les variables de type intstockent la valeur binaire réelle de l'entier que vous souhaitez représenter. int.parseInt("1")n'a pas de sens car intn'est pas une classe et n'a donc aucune méthode.
Integerest une classe, pas différente des autres dans le langage Java. Les variables de type Integerstockent les références aux Integerobjets, comme avec tout autre type de référence (objet). Integer.parseInt("1")est un appel à la méthode statique parseIntde la classe Integer(notez que cette méthode retourne en fait un intet non un Integer).
Pour être plus précis, Integerc'est une classe avec un seul champ de type int. Cette classe est utilisée là où vous avez besoin d'un intpour être traité comme n'importe quel autre objet, comme dans les types génériques ou les situations où vous avez besoin de nullabilité.
Notez que chaque type primitif en Java a une classe wrapper équivalente :
byte a Byte
short a Short
int a Integer
long a Long
boolean a Boolean
char a Character
float a Float
double a Double
Les classes wrapper héritent de la classe Object et les primitives non. Il peut donc être utilisé dans des collections avec référence Object ou avec des génériques.
Depuis java 5, nous avons une autoboxing, et la conversion entre la classe primitive et la classe wrapper se fait automatiquement. Attention cependant car cela peut introduire des bugs subtils et des problèmes de performances; être explicite sur les conversions ne fait jamais de mal.
Je tiens à souligner, je pense que c'est la réponse parfaite pour deux raisons: 1- Concis et précis, en gardant le public / demandeur à l'esprit 2- Fournit des directives pour des détails supplémentaires plutôt que de tout mettre dans le texte de la réponse Pas tous il est possible de répondre aux questions avec précision et concision (certaines nécessitent beaucoup plus de détails et de nuances pour être exactes et complètes), mais je pense que toutes les réponses devraient essayer d'être aussi simples et directes.
DRich
11
Hé, je pense que c'est en fait le contraire. "int est un type primitif" ne vous dit rien, si vous ne savez pas ce qu'est un type primitif. (Et si vous le faites, vous connaissez déjà très probablement la différence entre int et Integer). Et l'envoi du lecteur à deux liens étiquetés "Lien 1" et "Lien 2" est assez inutile, surtout par rapport à la simple citation des sections pertinentes.
Steve Bennett
7
Un entier est à peu près juste un wrapper pour le type primitif int. Il vous permet d'utiliser toutes les fonctions de la classe Integer pour vous faciliter la vie un peu.
Si vous débutez avec Java, vous devez apprendre à apprécier la documentation Java. Par exemple, tout ce que vous voulez savoir sur la classe entière est documenté en détail.
Ceci est directement issu de la documentation de la classe Integer:
La classe Integer encapsule une valeur de type primitif int dans un objet. Un objet de type Integer contient un seul champ dont le type est int.
Cela manque un peu le sujet. Par exemple, comme Integerc'est une classe, elle peut être stockée dans des conteneurs (contrairement aux types primitifs).
Oliver Charlesworth
6
Une variable int contient une valeur entière signée 32 bits. Un Integer (avec un I majuscule) contient une référence à un objet de type (class) Integer, ou à null.
Java jette automatiquement entre les deux; de Integer à int chaque fois que l'objet Integer apparaît comme argument d'un opérateur int ou est affecté à une variable int, ou qu'une valeur int est affectée à une variable Integer. Ce casting est appelé boxe / unboxing.
Si une variable Integer faisant référence à null n'est pas mise en boîte, explicitement ou implicitement, une NullPointerException est levée.
(Dans le texte ci-dessus, le terme "variable" signifie variable locale, champ ou paramètre)
Integer fait référence au type de wrapper en Java alors que int s'agit d'un type primitif. Tout sauf les types de données primitifs en Java est implémenté comme des objets qui impliquent que Java est un langage de programmation orienté objet pur et hautement qualifié. Si vous en avez besoin, tous les types de primitives sont également disponibles en tant que types d'encapsuleur en Java. Vous pouvez avoir des avantages en termes de performances avec les types primitifs, et les types d'encapsuleur ne doivent donc être utilisés que lorsque cela est nécessaire.
Dans votre exemple comme ci-dessous.
Integer n =9;
la constante 9est mise en boîte automatique ( auto-boxinget unboxingse produit automatiquement à java 5partir de) Integeret vous pouvez donc utiliser l'instruction ainsi et aussi Integer n = new Integer(9). Ceci est effectivement réalisé grâce à la déclarationInteger.valueOf(9).intValue();
int est un type primitif et non un objet. Cela signifie qu'aucune méthode n'y est associée. Entier est un objet avec des méthodes (comme parseInt).
Avec le java plus récent, il existe des fonctionnalités de boxe automatique (et de déballage). Cela signifie que le compilateur insérera Integer.valueOf (int) ou integer.intValue () si nécessaire. Cela signifie qu'il est en fait possible d'écrire
Integer est une classe / objet wrapper et int est de type primitif. Cette différence joue un rôle énorme lorsque vous souhaitez stocker des valeurs int dans une collection, car elles acceptent uniquement les objets en tant que valeurs (jusqu'à jdk1.4). JDK5 à partir de l'autoboxing, c'est une toute autre histoire.
JDK5 + accepte également uniquement les objets; c'est juste que l'autoboxing permet au compilateur d'appeler automatiquement Integer.valueOf(i)ou Integer.intValue()pour vous. Collection<int>ne fonctionnera toujours pas. Ce n'est donc pas une histoire complètement différente - c'est la même histoire, avec juste un peu de sténographie.
yshavit
D'accord. Désolé, ma formulation pourrait ne pas refléter cela.
kosa
3
En Java, int est un type de données primitif tandis que Integer est une classe d'assistance, il est utilisé pour convertir un type de données en un autre.
intest un type primitif qui représente un entier. alors que Integerest un objet qui enveloppe int. L' Integerobjet vous donne plus de fonctionnalités, telles que la conversion en hexadécimal, chaîne, etc.
Vous pouvez également utiliser les concepts de POO avec Integer. Par exemple, vous pouvez utiliser Integer pour les génériques (ie ).Collection<Integer>
Java utilise des types primitifs (également appelés types simples), tels que int ou double , pour contenir les types de données de base pris en charge par le langage. Des types primitifs , plutôt que des objets, sont utilisés pour ces quantités dans un souci de performance . L'utilisation d'objets pour ces valeurs ajouterait une surcharge inacceptable aux calculs les plus simples. Ainsi, les types primitifs ne font pas partie de la hiérarchie des objets et ils n'héritent pas d'Object .
Malgré l'avantage de performance offert par les types primitifs, il y a des moments où vous aurez besoin d'une représentation d'objet. Par exemple, vous ne pouvez pas passer un type primitif par référence à une méthode . De plus, de nombreuses structures de données standard implémentées par Java fonctionnent sur des objets, ce qui signifie que
vous ne pouvez pas utiliser ces structures de données (spécifiques à un objet) pour stocker des types primitifs . Pour gérer ces situations (et d'autres), Java fournit des wrappers de type, qui sont des classes qui encapsulent un type primitif dans un objet.
Les classes Wrapper sont directement liées à la
fonction de mise en boîte automatique de Java . Les wrappers de type sont Double, Float, Long, Integer, Short, Byte, Character et Boolean . Ces classes offrent un large éventail de méthodes qui vous permettent d'intégrer pleinement les types primitifs dans la hiérarchie d'objets Java.
Pour optimiser l'exécution du code Java, intdes types primitifs ont été ajoutés, y compris float, booletc., mais ils sont accompagnés de classes wrapper afin que, si nécessaire, vous pouvez les convertir et les utiliser comme objet Java standard avec de nombreux utilitaires fournis en tant que membre. fonctions (telles que Integer.parseInt("1")).
intest un type de données primitif alors qu'il Integers'agit d'un type de référence ou d'encapsuleur (classe) en Java.
après java 1.5qui introduisent le concept de autoboxing et unboxing vous pouvez initialiser les deux intou Integercomme celui - ci.
int a=9Integer a =9// both valid After Java 1.5.
pourquoi Integer.parseInt("1");mais pas int.parseInt("1");??
Integerest une classe définie dans la jdkbibliothèque et parseInt()est une méthode statique appartient à la Integerclasse
Donc, Integer.parseInt("1");c'est possible en Java. mais intest de type primitif (supposez comme un mot-clé) en java. Vous ne pouvez donc pas appeler parseInt()avec int.
Integer n = 9;
raison de l'autoboxing (à moins que vous n'utilisiez une très ancienne version de java)Réponses:
int
est un type primitif. Les variables de typeint
stockent la valeur binaire réelle de l'entier que vous souhaitez représenter.int.parseInt("1")
n'a pas de sens carint
n'est pas une classe et n'a donc aucune méthode.Integer
est une classe, pas différente des autres dans le langage Java. Les variables de typeInteger
stockent les références auxInteger
objets, comme avec tout autre type de référence (objet).Integer.parseInt("1")
est un appel à la méthode statiqueparseInt
de la classeInteger
(notez que cette méthode retourne en fait unint
et non unInteger
).Pour être plus précis,
Integer
c'est une classe avec un seul champ de typeint
. Cette classe est utilisée là où vous avez besoin d'unint
pour être traité comme n'importe quel autre objet, comme dans les types génériques ou les situations où vous avez besoin de nullabilité.Notez que chaque type primitif en Java a une classe wrapper équivalente :
byte
aByte
short
aShort
int
aInteger
long
aLong
boolean
aBoolean
char
aCharacter
float
aFloat
double
aDouble
Les classes wrapper héritent de la classe Object et les primitives non. Il peut donc être utilisé dans des collections avec référence Object ou avec des génériques.
Depuis java 5, nous avons une autoboxing, et la conversion entre la classe primitive et la classe wrapper se fait automatiquement. Attention cependant car cela peut introduire des bugs subtils et des problèmes de performances; être explicite sur les conversions ne fait jamais de mal.
la source
C#
tous les types de données ont des "alias" et ont duint.Parse()
sens (même si ce n'est vraiment pas le cas)C#
est complètement hors de propos ici.Integer est une classe et int est un type primitif.
Lisez ces liens:
la source
Un entier est à peu près juste un wrapper pour le type primitif int. Il vous permet d'utiliser toutes les fonctions de la classe Integer pour vous faciliter la vie un peu.
Si vous débutez avec Java, vous devez apprendre à apprécier la documentation Java. Par exemple, tout ce que vous voulez savoir sur la classe entière est documenté en détail.
Ceci est directement issu de la documentation de la classe Integer:
La classe Integer encapsule une valeur de type primitif int dans un objet. Un objet de type Integer contient un seul champ dont le type est int.
la source
Integer
c'est une classe, elle peut être stockée dans des conteneurs (contrairement aux types primitifs).Une variable int contient une valeur entière signée 32 bits. Un Integer (avec un I majuscule) contient une référence à un objet de type (class) Integer, ou à null.
Java jette automatiquement entre les deux; de Integer à int chaque fois que l'objet Integer apparaît comme argument d'un opérateur int ou est affecté à une variable int, ou qu'une valeur int est affectée à une variable Integer. Ce casting est appelé boxe / unboxing.
Si une variable Integer faisant référence à null n'est pas mise en boîte, explicitement ou implicitement, une NullPointerException est levée.
(Dans le texte ci-dessus, le terme "variable" signifie variable locale, champ ou paramètre)
la source
Integer
fait référence au type de wrapper en Java alors queint
s'agit d'un type primitif. Tout sauf les types de données primitifs en Java est implémenté comme des objets qui impliquent que Java est un langage de programmation orienté objet pur et hautement qualifié. Si vous en avez besoin, tous les types de primitives sont également disponibles en tant que types d'encapsuleur en Java. Vous pouvez avoir des avantages en termes de performances avec les types primitifs, et les types d'encapsuleur ne doivent donc être utilisés que lorsque cela est nécessaire.Dans votre exemple comme ci-dessous.
la constante
9
est mise en boîte automatique (auto-boxing
etunboxing
se produit automatiquement àjava 5
partir de)Integer
et vous pouvez donc utiliser l'instruction ainsi et aussiInteger n = new Integer(9)
. Ceci est effectivement réalisé grâce à la déclarationInteger.valueOf(9).intValue();
la source
int est un type primitif et non un objet. Cela signifie qu'aucune méthode n'y est associée. Entier est un objet avec des méthodes (comme parseInt).
Avec le java plus récent, il existe des fonctionnalités de boxe automatique (et de déballage). Cela signifie que le compilateur insérera Integer.valueOf (int) ou integer.intValue () si nécessaire. Cela signifie qu'il est en fait possible d'écrire
qui est interprété comme
la source
Integer est une classe / objet wrapper et int est de type primitif. Cette différence joue un rôle énorme lorsque vous souhaitez stocker des valeurs int dans une collection, car elles acceptent uniquement les objets en tant que valeurs (jusqu'à jdk1.4). JDK5 à partir de l'autoboxing, c'est une toute autre histoire.
la source
Integer.valueOf(i)
ouInteger.intValue()
pour vous.Collection<int>
ne fonctionnera toujours pas. Ce n'est donc pas une histoire complètement différente - c'est la même histoire, avec juste un peu de sténographie.En Java, int est un type de données primitif tandis que Integer est une classe d'assistance, il est utilisé pour convertir un type de données en un autre.
Par exemple:
Les types de données primitifs stockent la mémoire disponible la plus rapide où la classe Helper est complexe et sont stockés dans la mémoire de tas.
référence de "David Gassner" Java Essential Training.
la source
int
est un type primitif qui représente un entier. alors queInteger
est un objet qui enveloppeint
. L'Integer
objet vous donne plus de fonctionnalités, telles que la conversion en hexadécimal, chaîne, etc.Vous pouvez également utiliser les concepts de POO avec
Integer
. Par exemple, vous pouvez utiliser Integer pour les génériques (ie ).Collection
<Integer>
la source
Ceci est tiré de Java: The Complete Reference, Ninth Edition
la source
Pour optimiser l'exécution du code Java,
int
des types primitifs ont été ajoutés, y comprisfloat
,bool
etc., mais ils sont accompagnés de classes wrapper afin que, si nécessaire, vous pouvez les convertir et les utiliser comme objet Java standard avec de nombreux utilitaires fournis en tant que membre. fonctions (telles queInteger.parseInt("1")
).la source
int
est un type de données primitif alors qu'ilInteger
s'agit d'un type de référence ou d'encapsuleur (classe) en Java.après
java 1.5
qui introduisent le concept de autoboxing et unboxing vous pouvez initialiser les deuxint
ouInteger
comme celui - ci.Integer
est une classe définie dans lajdk
bibliothèque etparseInt()
est une méthode statique appartient à laInteger
classeDonc,
Integer.parseInt("1");
c'est possible en Java. maisint
est de type primitif (supposez comme un mot-clé) en java. Vous ne pouvez donc pas appelerparseInt()
avecint
.la source