• Home
  • Docker
  • Kubernetes
  • LLMs
  • Java
  • Ubuntu
  • Maven
  • Big Data
  • Archived
Java | Types
  1. Types
  2. Types primitives
    1. Notes
    2. Boolean type: boolean
    3. Character type: char (16 bits)
    4. Integer type: byte (1 byte/8 bits: -128:127)
    5. Integer type: short (2 bytes/16 bits: -32_768:32_767)
    6. Integer type: int (4 bytes/32 bits: -2_147_483_648:2_147_483_647)
    7. Integer type: long (8 bytes/64 bits)
    8. Floating-Point type: float (4 bytes/32 bits)
    9. Floating-Point type: double (8 bytes/64 bits)
  3. Types références
    1. Notes
    2. Interface
    3. Classe
    4. Tableau

  1. Types

    • Long integer numbers have a suffix l or L: 1l, 1L
    • Floating-point numbers (float) have a suffix f or F: 1.0f, 1.0F
    • Floating-point numbers (double) can optionally have a suffix d or D: 1.0, 1.0d, 1.0D
    • Hexadecimal numbers have a prefix 0x or 0X: 0x1, 0X1
    • Octal numbers have a prefix 0: 01
    • Binary numbers have a prefix 0b or 0B: 0b1, 0B1

    • Underscores can be added to number literals: 1_000_000

    • A character can be expressed as hexadecimal value using the suffix \u: \u0000, \uFFFF

    • Java 11: You can use the keyword "var" to declare a local variable assuming its type can be inferred by the compiler using its assigned value.
  2. Types primitives
    1. Notes
      Types primitives:
      • Boolean type: boolean
      • Character type: char
      • Integer types: byte, short, int, long
      • Floating-Point types: float, double

      The following are the possible conversions between numeric types without information loss:
      • byte → short → int → long
      • char → int
      • int → double
      • float → double

      The following are the possible conversions between numeric types with possibility of information loss (precision):
      • int → float
      • long → float
      • long → double

      When the conversion between two numeric types can be done without information loss, then automatic conversion is possible:
      Otherwise you need to manually cast the value of a specific type to another:

      Note that the value might be truncated if it's larger than the supported range of numeric values of the target type:
      gives the value: -128.

      When applying a binary operator on operands of distinct types, then the following should be considered:
      • If an operand is of type double, then the other operand will be converted to a double
      • If an operand is of type float, then the other operand will be converted to a float
      • If an operand is of type long, then the other operand will be converted to a long
      • Otherwise, the operands will be converted to a int
    2. Boolean type: boolean
      Une variable de type boolean peut contenir les valeurs true ou false.
    3. Character type: char (16 bits)
      Une variable de type char peut contenir des caractères.
      La valeur de la variable est représentée par 16 bits.

      Une variable de type char peut aussi contenir des nombres entiers positifs.
      Une variable de type char peut contenir les valeurs suivantes : [0, 65535]
      Un cast est nécessaire pour affecter une valeur entière a une variable de type char.

      A character can be expressed as a hexadecimal value using the suffix \u

      Escape Characters:
      Unicode escape characters are interpreted before the code get parsed.
      • For example "\u0022 + \u0022" is equivalent to "" + ""

      • \u0061 is the unicode value of the character 'a'
      Some cases may cause the compiler to complain about a syntax error:
      • The following will be interpreted as if you have typed System.out.println("" "");:

      • Line feed within a comment:

      • Invalid unicode character prefix within a comment:

      Please note that the type char can hold any 16 bit (basic) unicode character. For the supplementary unicode characters, each unicode character has a code value (code point) which is represented as pairs of 16 bit code units. When working with strings that might hold supplementary unicode characters, you should be aware that a char value might actually hold the code units that represent the supplementary unicode character. For example, the smiley symbol "🙂" is represented with 2 code units:
      If you need to print all characters of a string, use the codePoints method of the String class:
      See the Java docs API for the usage of Character.toChars method:
    4. Integer type: byte (1 byte/8 bits: -128:127)
      Une variable de type byte peut contenir à la fois des valeurs positives et négatives.
      La valeur de la variable est représentée par 8 bits.
      Le premier bit sert comme flag pour décider si la valeur est positive ou négative : 1 pour le signe négatif et 0 pour le signe positif.
      Les 7 autres bits restants sont utilisés pour représenter la valeur de la variable.
      Une variable de type byte peut contenir les valeurs suivantes : [-128, 127].
    5. Integer type: short (2 bytes/16 bits: -32_768:32_767)
      Une variable de type short peut contenir à la fois des valeurs positives et négatives.
      La valeur de la variable est représentée par 16 bits.
      Le premier bit sert comme flag pour décider si la valeur est positive ou négative : 1 pour le signe négatif et 0 pour le signe positif.
      Les 15 autres bits restants sont utilisés pour représenter la valeur de la variable.
      Une variable de type short peut contenir les valeurs suivantes : [-32768, 32767].
    6. Integer type: int (4 bytes/32 bits: -2_147_483_648:2_147_483_647)
      Une variable de type int peut contenir à la fois des valeurs positives et négatives.
      La valeur de la variable est représentée par 32 bits.
      Le premier bit sert comme flag pour décider si la valeur est positive ou négative : 1 pour le signe négatif et 0 pour le signe positif.
      Les 31 autres bits restants sont utilisés pour représenter la valeur de la variable.
      Une variable de type int peut contenir les valeurs suivantes : [-(231), (231)-1].
    7. Integer type: long (8 bytes/64 bits)
      Une variable de type long peut contenir à la fois des valeurs positives et négatives.
      La valeur de la variable est représentée par 64 bits.
      Le premier bit sert comme flag pour décider si la valeur est positive ou négative : 1 pour le signe négatif et 0 pour le signe positif.
      Les 63 autres bits restants sont utilisés pour représenter la valeur de la variable.
      Une variable de type long peut contenir les valeurs suivantes : [-(263), (263)-1].
    8. Floating-Point type: float (4 bytes/32 bits)
      Une variable de type float peut contenir des nombres réels.
      La valeur de la variable est représentée par 32 bits.

      Examples:

      Constant holding the positive infinity of type float:

      Constant holding the negative infinity of type float:

      Constant holding a Not-a-Number (NaN) value of type float:

      Check if a variable is not a number:

      The following is always false (use Float.isNaN instead):

      Check if a variable is positive infinity:

      Check if a variable is negative infinity:

      Check if a variable is a finite floating-point value:

      Check if a variable is either positive infinity or negative infinity:
    9. Floating-Point type: double (8 bytes/64 bits)
      Une variable de type double peut contenir des nombres réels.
      La valeur de la variable est représentée par 64 bits.

      Examples:

      Constant holding the positive infinity of type double:

      Constant holding the negative infinity of type double:

      Constant holding a Not-a-Number (NaN) value of type double:

      Check if a variable is not a number:

      The following is always false (use Double.isNaN instead):

      Check if a variable is positive infinity:

      Check if a variable is negative infinity:

      Check if a variable is a finite floating-point value:

      Check if a variable is either positive infinity or negative infinity:
  3. Types références
    1. Notes
      Quand on parle de référence, il faut distinguer les objets créés en mémoire des variables qui référencent ces objets :
      • Un objet est une instance d'une classe bien particulière qui ne changera plus jamais une fois créée.

      • Une variable, de son cotée, peut référencer n'importe quel objet en mémoire et peut aussi référencer durant sa vie différents objets, si la variable n'est pas déclarée avec le mot clé final.

        Les seules conditions qui s'appliquent aux variables concernent le type utilisé lors de leurs déclarations :

        • Le type de la variable ne peut être modifié une fois la variable est déclarée.

        • Si la variable est déclarée avec le mot clé final alors, une fois initialisée, sa valeur ne peut pas être modifiée (autrement dit, la variable ne peut pas référencer un autre objet).

        • Le type de la variable décide quels objets il est possible de référencer.
          Cela inclut tous:
          - les objets du même type que celui de la variable,
          - et aussi les objets dont le type est un sous-type de celui de la variable.

        • Le type de la variable détermine les méthodes de l'objet qu'il est possible d'invoquer.
          Cette contrainte a plus d'importance lorsque le type de l'objet référencé est un sous-type de celui de la variable, car, potentiellement, le type de l'objet peut définir de nouvelles méthodes qui ne sont pas définies par le type de la variable.

    2. Interface
      • Règles de déclaration des interfaces :

        • La déclaration de l'interface peut utiliser uniquement les modificateurs public et abstract.

        • La déclaration de l'interface peut omettre le modificateur d'accès public (dans ce cas elle obtiendra l'accès default).

        • La déclaration de l'interface peut utiliser ou omettre le modificateur abstract ; une interface peut contenir des déclarations de méthodes ainsi que des méthodes ayant le modificateur default.

        • La déclaration de l'interface ne peut pas utiliser les modificateurs d'accès protected ou private.

        • La déclaration de l'interface ne peut pas utiliser les modificateurs static ou final.

      • Règles de déclaration des variables des interfaces :
        • La déclaration des variables peut utiliser uniquement les modificateurs public, final, et static.

        • La déclaration des variables peut omettre les modificateurs public, final, et static ; le compilateur les ajoutent par défaut.
          Les variables déclarées dans les interfaces sont, en fait, des constantes et ne peuvent être être modifiées dans les classes qui implémentent ces interfaces.

        • La déclaration des variables ne peut pas utiliser les modificateurs d'accès protected ou private.

      • Règles de déclaration des méthodes des interfaces :
        • La déclaration des méthodes peut utiliser uniquement les modificateurs public et abstract.

        • La déclaration des méthodes peut omettre les modificateurs public et abstract ; le compilateur les ajoutent par défaut.

        • La déclaration des méthodes ne peut pas utiliser les modificateurs d'accès protected ou private.

        • Les méthodes des interfaces ne peuvent pas utiliser les modificateurs final (à cause du mot clé abstract), static, native, ou strictfp.

        • Les méthodes des interfaces ne peuvent pas définir du code (à cause du mot clé abstract) à moins de les marquées comme default.

      • Règles pour étendre des interfaces :
        • Une interface peut étendre (extend) uniquement d'autres interfaces (elle ne peut pas étendre des classes).

      • Règles pour implémenter les méthodes des interfaces :
        • Une classe peut implémenter (implements) plusieurs interfaces.

        • Une classe qui implémente une interface doit implémenter toutes les méthodes de cette interface à moins que cette classe est :
          - abstraite ;
          - ou qu'une de ses superclasse à déjà implémenter les méthodes de cette interface.



    3. Classe
      • Une classe peut étendre (extend) une seule classe.

      • Une classe peut implémenter (implements) plusieurs interfaces.

      • Une classe peut déclarer plusieurs constructeurs (signatures différentes) qui peuvent être invoqués à l'instanciation de la classe.
        Le constructeur invoqué dépend des arguments utilisés pour l'instanciation de la classe (new).
        Le constructeur invoqué peut lui même invoquer un autre constructeur de la classe en utilisant le mot clé this.

      • Le compilateur ajoute par défaut un constructeur sans paramètres, uniquement, quand aucun constructeur n'a été défini pour la classe.

      • La déclaration du constructeur ne peut pas spécifier une valeur de retour et ne peut pas utiliser les modificateurs final, static, et abstract.
    4. Tableau
      • Un tableau est une structure de type Object qui peut contenir un nombre fixe d'éléments du même type (primitive ou référence).

      • Tous les éléments du tableau doivent être du même type ou des sous-types du type principale défini dans la déclaration du tableau.

      • Le nombre d'éléments maximal que peut contenir un tableau est déterminé à la création du tableau et ne peut être changé par la suite.

      • Les éléments des tableaux sont accessibles par leurs indices dans le tableau ; le premier élément du tableau a l'indice 0, et le deuxième a l'indice 1, ainsi de suite.

      Declare an array that can hold integers:

      Declare an array that can hold objects:

      Declare a String array and initialize it with initial values:

      Declare an Object array and initialize it with initial values:

      Declare a 2 dimensional array and initialize it with initial values:

      Declare an empty array:

      To iterarte over an array, use "for each" loop: for (type element : array) statement

      To copy an array, use the method "copyOf" of the "Arrays" class: Arrays.copyOf(array, array.length)

      To sort an array, use the method "sort" of the "Arrays" class: Arrays.sort(array)
© 2025  mtitek