JAVA - résumé

Plus d'informations voir JAVA

Opérateurs

Comme dans tous les langages, il existe des opérateurs:

  • De calcul: +, -, /, *, =, %
  • D'assignation: +=, -=, *=, /=
  • D'incrémentation: ++, --
  • De comparaison: ==, <, <=, >=, >, !=
  • D'opérateurs logiques: &&, ||, !
  • D'opérateurs bit à bit: &, |, ^
  • Et enfin rotation de bit: <<, >>, >>>

(rien de transcendant jusque là...)

 

Variables

Toutes les variables sont des pointeurs, il n'y a donc pas de &, *, ... contrairement au C++

Les variables qui sont déclarées dans le heap sont initialisées par défaut (int à 0, booléen à false, ...). Les variables déclarées localement ne le sont pas.

Types élémentaires des variables:

Type Désignation Taille Plage des valeurs
byte octet 1 -128 à 127
boolean booléen 1 true ou false
char caractère 2 Caractère du jeu Unicode (65000 caractères possibles)
double flottant double 8 4,9*10-324 à 1,7*10308
float flottant 4 -1,4*10-45 à 3,4*1038
int entier 4 -2147483648 à 2147483647
long entier long 8 -9223372036854775808 à -9223372036854775807
short entier court 2 -32768 à 32767

 

Noteunsigned n'existe pas en JAVA. Il sera nécessaire pour traiter ce cas de caster par exemple un int dans un long puis de convertir le nombre négatif en positif.

NoteLes chaines de caractères ne sont pas des types primitifs. Elles sont en fait dans la classe java.lang.String.

Néanmoins, la notation est dite pseudo primitive car vous utiliserez le = pour affecter la variable:

String text = new String ("Coucou");

text = "Hello";

Tableau de type primitif

On indique qu'une variable est un tableau grâce à la paire de crochets qui pourra être placées avant ou après le nom de la variable.

Par exemple, un tableau de caractères:

char [] caractere = new char[20]; // Tableau de 20 caractères

Ou d'entier:

int entier[] = new int[20];

Pour un tableau bidimensionnel de flottants:

float [][] flottant = new float[20][10];

NoteLes tableaux sont "limités" à 256 dimensions !

NoteEn réalité, dés que l'on travail dans plusieurs dimensions, on fait des tableaux de tableaux.

NoteUn tableau est un objet d'où le new, bien que l'on déclare le tableau comme une primitive.

Vous pouvez donc taper int entier[][]=new int[10];

On peut ainsi définir un tableau non rectangulaire !

Par exemple:

int [][] entier=new int[2][];
entier[0]=new int[10];
entier[1]=new int[15];

 

Accessibilité aux méthodes ou aux données

Il y a quatre niveaux d'accès dans JAVA pour accéder aux variables d'instances ou aux méthodes :

public : une variable ou une méthode public est accessible sera accessible depuis n'importe où.
protected : Une variable ou une méthode protégée est accessible par la classe, ou des classes dérivées.
private : Une variable ou une méthode privée est accessible uniquement depuis la classe.
rien: Encore appelé "friendly" est accessible uniquement aux classes d'un package et à ses classes filles.

AttentionTout le monde vous parlera d'accéssibilité par rapport à une classe et non à une instance, et pour cause:

Une donnée privée n'est pas si privée que cela, car une instance de classe pourra aussi accéder aux données d'une autre instance de la même classe sans avoir besoin de passer par un mutateur ou accesseurs, il lui suffit de connaître cette autre instance ! Voyez l'exemple suivant...

 

Autres

- Commentaires : /* remarques */ ou // remarques jusque fin de la ligne
Cas particulier: /** Javadoc */ Où java doc est votre texte. Fonctionne comme /* */, mais permet de générer de la documentation sous forme HTML via javadoc.

- this : permet d'accéder aux attributs d'un objet. Cela évite les risques de confusions lorsque par exemple une méthode utilise une variable portant le même nom qu'un attribut de notre objet (lève l'ambiguïté).

Permet aussi d'éviter les redondances de méthodes (déléguation). Par exemple, il existe un constructeur point (x,y) et un constructeur point(Point p).

Par défaut, dans le constructeur Point(x,y), on pourrait trouver:

Point(double x, double y)

{

this.x=x; // Utilisation de this pour lever l'ambiguïté entre le x de la classe et x passé en paramètre

this.y=y;

}

mais il y a alors redondance avec point (x,y). Pour éviter cette redondance, vous taperez plutôt:

Point(Point p)

{

this (p.x,p.y) // this qui lancera la méthode Point (x,y) avec les valeurs de p.x et p.y.

}

Cette solution est appelée constructeur par copie



Par exemple

Attentionles méthodes statiques ne peuvent pas accéder à this. this est en effet équivalent à une variable d'instance et non de classe.


- Classes, dérivation, héritage simple, polymorphisme sur-définition, abstraction, interfaces, super, extends voir ici !

 

La déclaration de variables ou objets

Les variables ou objets peuvent être déclarés n’importe où, même dans une instruction. Evidement la portée sera plus ou moins grande (durée de vie des variables).

Ex. :

for (int i = 0, i < 10, i++) {...} // La portée/durée de vie de i est limitée au for

Où dans une fonction, dans ce cas, la portée des variables est limitée à la fonction

{

int j =10 ;
int i = 2 ;
int k = max(j,i) ;


}

- Allocation dynamique :
Valable pour une variable, une classe.

int p
p = new int ;

char ch ;
ch = new char[100] ;