Déclaration / initialisation de variable Java / type de données (distribution et promotion)

Objectif de cet article

J'étudie Java et j'écris un article pour sortir ce que j'ai appris et pour établir des connaissances. Je décrirai ce que j'ai appris séparément comme suit.

Définition variable

La définition de variables en Java nécessite les deux étapes suivantes:

  1. Spécifiez le type de données de la valeur à mettre dans la variable
  2. Choisissez le nom de la variable

Exemple:

  1. type int (valeur numérique)     int number; int est le type de données qui représente un nombre et number est le nom de la variable. Dans l'exemple ci-dessus, le numéro de variable de type int est défini.
  2. type de chaîne     String text; String est un type de données qui représente une chaîne et la première lettre est en majuscule. text est le nom de la variable. Dans l'exemple ci-dessus, un texte de variable de type String est défini.

Comme pour 1 et 2, ajoutez un point-virgule à la fin de la phrase.

Règles de dénomination des variables

・ Le premier caractère est Alphabet majuscules / minuscules, symboles $, _, etc.

・ Le cas est strictement distingué.

・ Les nombres peuvent être utilisés après le deuxième caractère.

-Il n'y a pas de limite sur le nombre de caractères (longueur).

-Null, true, false ne peuvent pas être utilisés.

・ Les mots réservés ne peuvent pas être utilisés. Les mots réservés sont des noms déjà utilisés dans le langage Java. Exemple: if, while, switch, etc.

Initialisation variable

Comme le montre l'exemple ci-dessous, l'affectation d'une valeur en même temps que la définition d'une variable s'appelle l'initialisation de variable. Exemple:

  1. type int (entier)     int number = 3; Dans l'exemple ci-dessus, le numéro de variable de type int est défini et le numéro 3 est attribué.
  2. Chaîne * * Il n'y a pas de type de chaîne qui représente plusieurs caractères dans le type Java de base. Le type de chaîne est fourni sous la forme d'une classe appelée String. * String text =" caractère "; Dans l'exemple ci-dessus, un texte de variable de type String est défini et le "caractère" de la chaîne de caractères est attribué.

type de données java

Les types sont mentionnés dans l'explication ci-dessus, mais les types sont également subdivisés en fonction du type de valeur. Il existe des types de données en fonction de la plage de données pouvant être gérées. Plus la plage de données est large, plus elle consomme de mémoire. Assurez-vous de sélectionner le type de données approprié en fonction de la quantité de données à traiter et de la quantité de mémoire.

Type entier

Type de données Taille Gamme de valeurs
byte 1byte -Valeur entière de 128 à 127
char 1byte '\u0000'De'\uffff'Une valeur entière jusqu'à. (Il s'agit de 0 à 65535)
short 1byte -Une valeur entière comprise entre 32768 et 32767
int 1byte -Une valeur entière comprise entre 2147483648 et 2147483647.
long 1byte -Valeur entière comprise entre 9223372036854775808 et 9223372036854775807.

Type à virgule flottante

Type de données Taille Gamme de valeurs
float 4byte Point décimal simple précision 32 bits
double 8byte Point décimal simple précision 63 bits

Type logique

Type de données Taille Gamme de valeurs
boolean 1bit Une valeur qui est vraie ou fausse.

Type de référence

Il existe quatre types de référence: le type de classe, le type d'interface, la variable de type et le type de tableau. Les données de type classe et de type d'interface indiquent l'emplacement de l'objet, et les données de type tableau indiquent l'emplacement de l'objet tableau. La différence avec le type de base comme précédemment est que le type de base représente les données elles-mêmes, tandis que le type de référence indique l'emplacement des données. Pour faire simple, le type de base représente la maison elle-même et le type de référence représente l'adresse de la maison.

Exemple:

Main.java


class Main{
  public static void main(String args[]){
    int a[] = {1};
    int b[] = a;  //Où b a la même valeur de référence que a
    System.out.println(a[0]);  //a et b ont le même résultat de sortie
    System.out.println(b[0]);

    b[0] = 5;  //La valeur référencée est mise à jour

    System.out.println(a[0]);  //a et b ont le même résultat de sortie
    System.out.println(b[0]);
  }
}

Résultat d'exécution ↓

1
1
5
5

Dans l'exemple ci-dessus, a et b voient la même référence par le code "int b [] = a;". Jusqu'à ce que la valeur de référence change avec le code "b [0] = 5;" sur la 5ème ligne, les deux se réfèrent à "1", mais après que la valeur de référence soit mise à jour à "5" Fait référence à "5".

Cast (conversion de type)

La conversion de type variable s'appelle la conversion. Les variables qui étaient initialement de type int peuvent être modifiées en type long, et vice versa. Lors du calcul de la multiplication, etc., cela ne peut être fait qu'avec le même type de données. Lors du calcul de différents types, convertissez-les dans le même type. Il existe deux types de méthodes de conversion de type Java: la méthode de conversion automatique et la méthode de conversion manuelle. Si vous ajoutez le type String et le type int, le type int est automatiquement converti en type String.

Exemple:

test.java


System.out.printIn("Pomme" + "5" + "Il y a");

→ Converti en "Pommes" + "5" + "Il y a"

Il y a 5 pommes.

Est sortie.

Même si vous faites beaucoup de calculs avec le type entier de type int, le résultat du calcul sera le type numérique. Exemple:

test.java


System.out.printIn(5/2);

2

En fait, 2.5 est la bonne réponse, mais comme 2.5 est un type double, il ne peut pas être calculé entre les types int. Si vous voulez que le résultat du calcul de 5/2 soit 2,5,

Main.java


System.out.printIn(5.0/2);

ça ira. En effet, le résultat du calcul de type int et de type double est de type double (si l'un est double, le résultat est double). De cette manière, lorsque le résultat du calcul est représenté par une minorité flottante, l'entier est représenté par une minorité.

Cast lorsque vous souhaitez obtenir une valeur précise dans le calcul entre les types int.

Main.java


int number1 = 13;
int number2 = 4;
System.out.printIn((double)number1/number2);

3.25

En outre, ** la conversion de gros caractères en petits types peut entraîner une perte de données. ** ** Notez la plage de données du type de base d'origine et la plage de données du type de base coulée.

Main.java


public class Main {
 
    public static void main(String[] args) {
        double doubleMax = Double.MAX_VALUE;
        int result = (int) doubleMax; //Convertissez la valeur maximale de double en type int et affectez-la au résultat de la variable de type int
        
        System.out.println(doubleMax);
        System.out.println(result);
    }

}

Résultat d'exécution ↓

1.7976931348623157E308
2147483647

Cela ne provoque pas d'erreur, mais la valeur maximale du type double est remplacée par la valeur maximale du type int, qui est une valeur involontaire.

Promotion (promotion de type)

Il existe également une promotion pour la conversion de type. La promotion est un mécanisme qui convertit automatiquement la valeur en un type plus large lors du calcul de la valeur. Par exemple, lors du calcul d'un nombre de type long, le type de l'autre valeur est automatiquement converti en long.

Calculez la variable de type d'octet a et la variable de type long b. Une erreur se produira même si vous essayez de recevoir le résultat avec la réponse de variable de type octet.

Main.java


class Main{
  public static void main(String args[]){
      byte a = 10;
      long b = 20000;

      byte answer = a * b;
      System.out.println(answer);
  }
}

Résultat d'exécution ↓

//Type mismatch: cannot convert from long to byte

Pour obtenir le résultat correct, modifiez le type de réponse variable qui reçoit le résultat d'octet en long.

Main.java


class Main{
  public static void main(String args[]){
      byte a = 10;
      long b = 20000;

      long answer = a * b;
      System.out.println(answer);
  }
}

Résultat d'exécution ↓

200000

Si ni l'un ni l'autre n'est un type long, les valeurs de type Byte, de type court et de type char sont converties en type int.

De plus, si l'un est un float et l'autre n'est pas un double, l'autre valeur sera convertie en float.

Main.java


class Main{
  public static void main(String args[]){
      byte a = 10;
      float b = 0.83f;

      byte answer = a * b;
      System.out.println(answer);
  }
}

Résultat d'exécution ↓

//Type mismatch: cannot convert from float to byte

Main.java


class Main{
  public static void main(String args[]){
      byte a = 10;
      float b = 0.83f;

      float answer = a * b;
      System.out.println(answer);
  }
}

Résultat d'exécution ↓

8.3

Sinon, si vous convertissez le résultat du calcul en octets, aucune erreur ne se produira, mais dans ce cas, les chiffres après la virgule décimale seront omis, ce ne sera donc pas une réponse exacte.

Main.java


class Main{
  public static void main(String args[]){
      byte a = 10;
      float b = 0.83f;

      byte answer = (byte)(a * b);
      System.out.println(answer);
  }
}

Résultat d'exécution ↓

8

Si vous calculez avec le type char ou le type octet sans promotion, la réponse sera écrasante et la réponse ne sera pas correcte. En outre, si vous ne transtypez pas le calcul entre octets, une erreur se produit.

Main.java


class Main{
  public static void main(String args[]){
      byte a = 1;
      byte b = 2;

      byte answer = a * b;
      System.out.println(answer);
  }
}

Résultat d'exécution ↓

//Type mismatch: cannot convert from int to byte Java

Pour obtenir le résultat correct, changez le type de la réponse variable qui reçoit le résultat d'octet en int.

Main.java


class Main{
  public static void main(String args[]){
      byte a = 1;
      byte b = 2;

      int answer = a * b;
      System.out.println(answer);
  }
}

Résultat d'exécution ↓

 2

Ou, si vous souhaitez recevoir le résultat en octets, transtypez le résultat du calcul en octet.

Main.java


class Main{
  public static void main(String args[]){
      byte a = 1;
      byte b = 2;

      byte answer = (byte)(a * b);
      System.out.println(answer);
  }
}

Résultat d'exécution ↓

2

en conclusion

Comme vous pouvez le voir, en java, si vous ne faites pas attention au type, une erreur se produira dans un endroit inattendu, alors soyez prudent.

Recommended Posts

Déclaration / initialisation de variable Java / type de données (distribution et promotion)
[Introduction à Java] À propos des variables et des types (déclaration de variable, initialisation, type de données)
Déclaration, initialisation et types de variables Java
déclaration de variable java
[Introduction à Java] À propos de la conversion de type (distribution, promotion)
[Traitement × Java] Type de données et programmation orientée objet
[Java] Type de données ①-Type de base
A propos du type de données de base Java et de la mémoire du type de référence
Mémo d'apprentissage Java (type de données)
Type de données de base et type de référence
Programmation Java (variables et données)
À propos des instructions de déclaration de variable Java
[Java] Différence entre l’affectation d’une variable de type de base et l’affectation d’une variable de type de référence
Types de données de base et types de référence (Java)
[Java] Type de données / produit matriciel (produit matriciel AOJ ⑧)
Numéro d'examen Java SE Bronze: 1Z0-818 (Déclaration et utilisation des données) (octobre 2020)
Comment écrire une déclaration de variable Java
Types de données de base et types de référence Java
[Introduction à Java] À propos des opérations de tableau (tableau 1D, déclaration de tableau 2D, instanciation, initialisation et utilisation)
[Java] Conversion de type implicite (somme AOJ10 de nombres)
Conversion de type de données de date Java (date, calendrier, chaîne)
Créer des données binaires de longueur variable en Java
Utiliser le type de données PostgreSQL (jsonb) à partir de Java
[Java ~ A propos de la définition de variable et de la conversion de type ~] Note d'étude
[Note personnelle] Le type de données Java est ennuyeux
[Java] Aide-mémoire de classe de type de données / chaîne de caractères
Etude Java n ° 3 (conversion de type et exécution d'instruction)
[Introduction à Java] À propos des déclarations et des types de variables
[Java] Mécanisme de calcul, opérateurs et conversion de type
À propos des types de données Java (en particulier des types primitifs) et des littéraux
À propos de var utilisé en Java (type de variable locale)
[Java] Utilisation de final dans la déclaration de variable locale
Mémo organisé dans la tête (Java - type de données)
[Java] le type char peut être converti en type int
[Java] Différence entre "variable finale" et "objet immuable"