Skip to content

Les variables et types

lcs01 edited this page Jan 28, 2019 · 3 revisions

Variable

Elles permettent de stocker en mémoire des information (chiffre , lettre , chaine de lettre(mot)) Convention de nommage ,

Une variable commence par une lettre
Elle peut contenir un chiffre ou un underscore ( _ )
Le nombre de caractère n'est pas limité
Sensible a la case Attention au maj min dans vos noms
Certain mot clé ne doivent pas etre utilisé comme nom de variable
camelCase , String = monAge ou String = jaimeBienLesPokemon
lower camelCase pour les variable, upper camelCase pour les classe
pour les constante CONST_VITESSE Il va évidement de soit que la façon de nommer vos variable influence la lisibilité du code. Ainsi il est préférable de donner des noms claire et compréhensible.

#Type de variable

byte -128 à 127 (8bits)
short -32768 à 32767 (16bits)
int -2147483648 à 214748346 (32bits)
long -9223372036854775808 à 9223372036854775807 (64bits)

Si il existe plusieurs type de variable c'est pour mieux gérer l'espace mémoire allouer par celle-ci. Pour quelques variable cela peu sembler dérisoire mais pour un ensemble l'optimisation devient plus concrète.

Voir code dans divers test pour comprendre certain aspect, dépassement de mémoire et autres. https://github.com/rubenavone/java-project

Les divers caractère échappement (Permet d'afficher des caractere speciaux dans un System.out) : \t Tabulation \b Backspace \n saut de ligne \r retour chariot \f Saut de page ' Simple quote " Doublequote \ Antislash

Il est également possible d'afficher des caractère Unicode en précédant celui ci de \n suivis du code en question voir dans divers teste le code en question (Type.java) Liste non exhaustive https://unicode-table.com/fr Les booléen

Ce type de variable possède deux état (vrai ou faux, 0 ou 1, oui ou non, on ou off ); Valeur littérales

Une valeurs numérique entière peut être utilisée avec sa représentation ( a continuer ...)

nb exercice quatre (pour reformer une chaîne de caractère diviser en charAt il faut concaténer celle ci dans un for). Donc la valeur numérique peut être utilisé de façon littérale. i = 243 i = 0363 i = OxF3 i = O011110011

Voir https://github.com/Promo-Java-Montpellier/java/blob/master/1-lesVariables.pdf Conversions de types

Il s'agit ici de convertir le type d'une variable. Comme dans d'autre support son image etc si la conversion ce fait vers un type inférieur, alors un e perte d'information peu arriver. la conversion d'un double vers un long (perte de la partie decimal). Recherche personnelle suite a des tentatives de conversion : Pour certaine déclaration notamment sur le long et le double il y a une particularité, je m'explique.

//Tentative de conversion d'un long vers un int long number = 9223372036854775807L; //Il faut ajouter le L majuscule a la fin pour qu'il comprennent le Long //numberInt = (int)number; //Tentative de conversion vouée a l'échec ... //Tentative de conversion d'un double et float vers un int float decimal = 1.233424F; // error incompatbile lossy conversion from double to float ?? double decimalDouble = 1.234334;

            //Affichage des divers éléments
            System.out.println(decimalDouble);
            System.out.println(decimal);  
            System.out.println(number);

On peut donc observer que lors de la déclaration du long j'ajoute un L a la fin de mon nombre. D'après mes conclusion et au vus du message d'erreur lors de la compilation si ce L n'est pas présent il convertie automatiquement le long en int. Il en est de même avec le float qui est automatiquement convertie en double. évidement il n'est pas possible de convertir un long en int , si celui ci est trop grand (buffer overflow). Conversion vers une chaîne de caractère

Les fonctions de conversion vers le type chaîne de caractère sont accessibles par l'intermédiaire de la classe String. La méthode de classe valueOf assure la conversion d'une valeur d'un type de base vers une chaîne de caractères. (nb: voir tableau correspondant) Exemple pour valueOf:

double prixHT;

            prixHT = 1.123;
            String recap;

            System.out.println("Le montant de la commande est " + prixHT * 1.196);

            // cette fois ci on utilise valueOf pour convertir explicitement le System.out en string                

            System.out.println("Le montant de la commande est " + String.valueOf(prixHT * 1.196));

Conversion vers une chaîne de caractère

Il est fréquent de convertir un type numérique en chaîne de caractère. Pour pouvoir être manipulé par l'application, elle doit être convertie en un type numérique. Ce type de conversion est accessible par l'intermédiaire des classe équivalentes aux types de base. Elles permettent la manipulation de valeurs numériques sous forme d'objets. Chaque type de base possède sa classe associée.

classe associé ou wrapper :

byte = Byte
short = Short
int = Integer
long = Long
float = Float
double = Double
boolean = Boolean
char = Character

La méthode a utilisé ce trouve dans la classe correspondante au type de donnée que l'on souhaite obtenir. Déclaration des variables

int compteur; //Variable contenant un nombre entier double prix; //Variable contenant un nombre avec décimal String nom; // Variable contenant une chaîne de caractère

Il est tout a fait possible d'appliquer un modificateur d’accès et la valeur initiale de celle-ci.

private int compteur = 0; // ici l'accès sera de privée et la valeur initiale zero protected double prix = 123.56 public nom = null;

La déclaration peut ce trouver n'importe ou dans le code (meme si comme dit plus haut en début de code simplifie la lecture). Il suffit simplement que la déclaration précède l'utilisation de la variable.

Une façon plus condensé (moin claire) de déclarer vos variable existe.

int taille, poid, age;

Portée des variables

A retenir deux variable de portée différent peuvent être nommé de la même manière . Cependant si par exemple je déclare une variable éléphant dans le main, et que je déclare une variable éléphant dans une fonction celle dans la fonction prendra le pas sur celle dans le main dumoins dans cette fonction.

##Niveau d’accès des variables

Niveau d'accès et portée ce combine et détermine quelle portion peut lire ou écrire dans la variable.

Private: utilisable uniquement dans la portion de code ou elle est définis protected: utilisable dans la classe ou elle est definis et dans les sous classe de cette classe ainsi que dans les classe du meme package public: utilisable partout Aucun modificateur: accessible a partir de toutes les classe faisant partie du meme package static: transforme une variable d'instance en variable de classe (utilisable sans qu'une instance de classe existe).

Durée de vie des variables

La durée de vie d'une variable nous permet de spécifier pendant combien de temps durant l'éxécution de l'application le contenu d'une variable sera disponible. Pour une variable déclarée dans une fonction la durée de vie correspond à la durée d'execution de la fontion. Dès la fin de l'execution de la procedure ou fonctio, la variable est éliminée de la mémoire(garbage collector) elle est recréée lors du prochain appel de la fonction.

Les Constantes

Il arrive fréquement que l'on utilise des valeur numériques ou des chaine de caractere qui ne seront pas modifier pendant le fonctionnement de l'application. Il est conseillé, pour facilité la lecture du code, des les définirs en tant que constante.

Le mot clé final sert a définir cela , a noter qu'il faut absolument affecter la variable lors de la déclaration.

final double TAUXTVA = 1.196; //Convention de nommage en majuscule

On peut par la suite s'en servir comme n'importe quelle variable Il est egalement possible de déclarer une CONST a partir d'une autre variable

final double TOTAL = 100;
final double DEMI = TOTAL / 2;

Les énumérations

Une énumération va nous permettre de définir un sensemble de constante qui sont liées entre elles.

public enum Jours {
    DIMANCHE;
    LUNDI;
    MARDI;
    MERCREDI;
    JEUDI;
    VENDREDI;
    SAMEDI;
}

/* équivalent ecrit entierement */

public class Jours {
    puclic static final int DIMANCHE = 0;
    puclic static final int LUNDI = 1;
    puclic static final int MARDI = 2;
    puclic static final int MERCREDI = 3;
    puclic static final int JEUDI = 4;
    puclic static final int VENDREDI = 5;
    puclic static final int SAMEDI = 6;
}

C'est approximativement ce que fait le compilateur lors de l'analyse de ce code. La déclaration d'une énumération est une déclaration de classe "déguisée". Cette classe hérite implicitement de la classe java.lang.enum. (https://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html)

//Exemple de code detaillant les possibilité

public enum Daltons {
    //Nom de l'objet (taille ,poids)
    JOE (1.40 ,52),
    WILLIAM (1.68, 72),
    JACK (1.93 ,83),
    AVERELL (2.13,89);
    
    private final double taille;
    private final double poid;


    private Daltons(double taille, double poids) {
    this.taille = taille;
    this.poids= poids;
    }
    private double taille() {
	return taille;
    }
    private double poids(){
	return poids;
    }

    double imc(){
	return poids/(taille+taille);
    }
    ```


Nom variable peut être constitué de lettres, chiffres ou « _ » ageDuCapitaine (minuscule + maj 1ère lettre chaque mot)

Déclarée à lintérieur dune classe = variable dinstance

Déclarée avec le mot clé static à lintérieur dune classe = variable de classe

A lintérieur dune fonction = **variable locale **
TYPES
Numérique entier

byte -128 127 8 bits

short -32768 32767 16 bits

int -2147483648 2147483647 32 bits

long -9223372036854775808 9223372036854775808 64 bits
Décimaux

float

double
Caractère

Stocker un caractère unique
Boolean

variable qui peut prendre deux états vrai/faux, oui/non, on/off 

boolean disponible, modifiable ;

disponible=true ;

modifiable=false ;

Clone this wiki locally