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 |
unsigned 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.
Les 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];
Les tableaux sont "limités"
à 256 dimensions !
En réalité,
dés que l'on travail dans plusieurs dimensions, on fait des tableaux
de tableaux.
Un 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.
Tout 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
les 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] ;