1. Integer
classe
Integer
est également bon en ce sens qu'il s'agit d'une classe, ce qui signifie qu'il peut avoir des champs et des méthodes. Et, bien sûr, il les a. Beaucoup d'entre eux - des dizaines d'entre eux. Ici, nous allons considérer les plus basiques.
La Integer
classe a deux champs qui contiennent les valeurs maximales et minimales possibles du int
type :
Champ | Description |
---|---|
|
Valeur maximale possible du int type |
|
Valeur minimale possible du int type |
Parfois, vous souhaitez affecter la int
valeur la plus petite ou la plus grande possible à une variable. Pour éviter d'encombrer votre code avec des constantes incompréhensibles, vous pouvez écrire ceci très clairement comme suit :
Code | Description |
---|---|
|
|
La Integer
classe a également quelques méthodes intéressantes. Les voici:
Méthodes | Description |
---|---|
|
Renvoie une chaîne qui est la représentation hexadécimale du nombre |
|
Renvoie une chaîne qui est la représentation binaire du nombre |
|
Renvoie une chaîne qui est la représentation octale du nombre |
|
Enveloppe le passé int dans un Integer objet |
|
Renvoie le nombre obtenu à partir de la chaîne passée |
Vous avez déjà rencontré la Integer.parseInt()
méthode statique. Rappelons comment cela fonctionne :
int name = Integer.parseInt(string);
Si une chaîne contenant un nombre (uniquement des chiffres) est transmise à la parseInt()
méthode, elle analysera la chaîne et renverra le nombre qu'elle contient.
Les autres méthodes sont également utiles. Par exemple, certains d'entre eux peuvent convertir un nombre transmis en une chaîne contenant la représentation binaire, octale ou hexadécimale du nombre.
2. Double
classe
En général, la Double
classe est similaire à la Integer
classe, sauf qu'elle enveloppe un double
plutôt qu'un int
. Il a aussi des domaines et des méthodes qui vont nous intéresser. Considérez-en quelques-uns :
La Double
classe a six champs intéressants :
Champ | Description |
---|---|
|
Infini négatif |
|
Infini positif |
|
Exposant minimum possible (2 x ) |
|
Exposant maximum possible (2 x ) |
|
Valeur minimale possible du double type |
|
Valeur maximale possible du double type |
Infini
Si vous divisez -1.0
par 0.0
, vous obtenez moins l'infini. Si vous divisez 1.0
par 0.0
, vous obtenez l'infini positif. Non seulement vous pouvez diviser a double
par zéro, mais vous pouvez également l'utiliser pour stocker le résultat de ces opérations.
Exposant d'undouble
Comprendre l'exposant est facile. En interne, un double se compose d'une mantisse et d'un exposant. Mais ici la valeur de l'exposant n'est pas , mais . Ainsi, si l'exposant augmente de , la valeur totale du nombre doublera.10x
2x
1
MIN_EXPONENT == -1024
, ce qui signifie , qui est approximativement égal à2-1024
10-308
Et bien sûr, la Double
classe a des méthodes intéressantes :
Méthodes | Description |
---|---|
|
Renvoie une chaîne qui est la représentation hexadécimale du nombre |
|
Vérifie si le nombre passé est infini. |
|
Vérifie si le numéro transmis estNaN |
|
Enveloppe le passé double dans un Double objet |
|
Renvoie le nombre obtenu à partir de la chaîne passée |
Fait intéressant, il existe une isInfinite()
méthode qui renvoie true
si le nombre passé est l'infini positif ou négatif.
La isNaN()
méthode est similaire — elle vérifie si le nombre passé est NaN
( Not-a-Number , une constante spéciale qui indique une valeur indéfinie).
3. Character
classe
La Character
classe est intéressante principalement pour son grand nombre de méthodes utilitaires statiques qui permettent de vérifier si les caractères appartiennent à différentes catégories.
Exemples
Méthodes | Description |
---|---|
|
Vérifie si un caractère est un caractère alphabétique |
|
Vérifie si le caractère est une lettre |
|
Vérifie si le caractère est un chiffre |
|
Vérifie si le caractère est un espace, un saut de ligne ou un saut de page (codes : 12, 13, 14) |
|
Vérifie si le caractère est un espace : un espace, une tabulation, etc. |
|
Vérifie si le caractère est en minuscule |
|
Vérifie si le caractère est en majuscule |
|
Convertit le caractère en minuscule |
|
Convertit le caractère en majuscule |
Une caractéristique de ces méthodes est qu'elles fonctionnent avec tous les alphabets connus : les chiffres arabes sont classés comme des chiffres, etc.
4. Boolean
classe
Le Boolean
type est pratiquement le même que le boolean
type. Les différences sont minimes.
Ci-dessous, nous montrons une version simplifiée de la Boolean
classe :
Code | Description |
---|---|
|
Constantes : TRUE è Constructeur de classe FALSE de variables La méthode renvoie la valeur de la variable interne Cette méthode statique convertit en et en . Boolean true TRUE false FALSE |
Le Boolean
type a deux constantes (deux champs) :
Constantes de la classe | Contrepartie pour le type booléen | Description |
---|---|---|
|
|
vrai |
|
|
FAUX |
Vous pouvez les utiliser de la même manière que vous travaillez avec le boolean
type :
Code | Note |
---|---|
|
La Boolean classe est la seule classe qui peut être écrite à l'intérieur d'une condition |
|
Les trois variables sont égales à true /TRUE |
|
Les constantes peuvent être comparées en utilisant à la fois equals et == Cela fonctionnera également. |
La boxe automatique fonctionne très bien ici. Cela signifie que vous pouvez utiliser ce type de la même manière que le boolean
type - il n'y a pas de pièges à éviter.
Comment c'est écrit | Comment ça fonctionne |
---|---|
|
|
Et voici une comparaison des types boolean
et Boolean
:
boolean a = true;
Boolean b = true; // b will be equal to Boolean.TRUE
Boolean c = true; // c will be equal to Boolean.TRUE
a == b; // true (compared by value)
a == c; // true (compared by value)
b == c; // true (compared by reference, but they point to the same object)
Si vous avez vraiment besoin d'un Boolean
objet indépendant, vous devez le créer explicitement :
boolean a = true;
Boolean b = new Boolean(true); // New Boolean object
Boolean c = true; // c will be equal to Boolean.TRUE
a == b; // true (compared by value)
a == c; // true (compared by value)
b == c; // false (compared by reference, and they point to different objects)
Un autre exemple, où nous utiliserons a Boolean
inside of an if
:
Code | Note |
---|---|
|
Cela compilera et fonctionnera |
Cela compilera, mais cela ne fonctionnera pas!
Code | Note |
---|---|
|
Erreur . Cette ligne lèvera une exception |
5. Mise en cache des valeurs pendant l'autoboxing
Il existe certains pièges liés aux types de wrapper entiers.
Comme vous le savez déjà, si nous comparons an int
et an Integer
, le Integer
est converti en an int
:
Comment c'est écrit | Comment ça fonctionne |
---|---|
|
|
Si vous comparez deux Integer
objets entre eux, ils ne sont pas convertis en int
s :
Code | Sortie console |
---|---|
|
|
a == c
et , mais , parce que quand on compare et on compare des références. C'est essentiellement ce à quoi nous nous attendions.b == c
a != b
a
b
Surprendre
Mais si nous remplaçons 500
par 100
, nous obtenons un résultat complètement différent :
Code | Sortie console |
---|---|
|
|
Le problème ici est qu'un nouvel Integer
objet n'est pas toujours créé lors de l'autoboxing . Les objets sont mis en cache pour les valeurs -128
via 127
inclusive.
La Integer
classe a un tableau caché qui stocke les objets : Integer(-128)
, Integer(-127)
, ... Integer(126)
,Integer(127)
Si vous écrivez Integer x = 128
, le processus d'autoboxing crée un nouvel objet, mais si vous écrivez Integer x = 127
, alors le processus d'autoboxing récupère l'objet existant du cache (du tableau).
Si vous ne voulez pas que l' Integer
objet provienne du cache, vous devrez le créer explicitement en écrivant :Integer x = new Integer(127);
Tous les types de wrapper ont un tel cache : Integer
, Long
, Byte
, Short
, Boolean
. Pour le Boolean
type, ses valeurs TRUE
et sont des constantes, elles sont donc également essentiellement mises en cache.FALSE
GO TO FULL VERSION