Pour le moment les exercices seront réalisés sur JSHELL.
Vous avez la possibilité de l’utiliser ligne à ligne ou en mode édition/exécution.
Exercices
Types entiers et opérations
- 
écrire du code pour déclarer, initialiser : - 
un intavec une valeur négative
- 
un intavec une valeur positive
- 
un intvalant0xFFFF
- 
un intvalant0xFFFFFFFF
- 
un intvalant107374757677
 Vos conclusions? 
- 
- 
Faites des expériences sur les opérations entières: tentez de manière systématique des valeurs simples et des valeurs extrèmes (et imprimez le résultat). 
Il est important d’avoir de l’imagination pour tester des valeurs. Ceci devient très utile quand on doit tester systématiquement des applications.
virgule flottante: types et opérations
Faites des expériences avec des nombres flottants (float ou double)
et leurs opérations.
Essayer avec des nombres très grands, des nombres très petits. Faire des divisions par zéro.
operations impliquant des types différents
      double montant = 22.1;
      int taux = 10 ;
      double resultat ;
      resultat= // VOTRE CODE ICIVotre code :
- 
Calculer en appliquant cette formule (attention: ceci n’est pas du code java mais une description "classique" de formule mathématiques): resultat = montant ÷ (1 + ((50 - taux) ÷ 1000))
| Warning | Le programme doit afficher: 21.25 | 
autres exercices sur des entiers
Faites des expériences avec la pre-incrémentation et la post-incrémentation
et les opérations composites comme *=  += …
(plus tard faire expérimenter les opérations comme:  &= <⇐ >>>=  )
Utiliser également les types byte et short.
type booléen et opérations rendant des booléens.
Faites des expériences avec des comparaisons et autres opérations qui rendent des valeurs booléenes.
Par exemple partez de :
public class TestCompare {
      public static void main(String[] args) {
        int x = 10 ;
        int y = -1 ;
        double valx = 10. ;
        double valy = -1;
        // VOTRE CODE
     }
}opérations "bit à bit" sur des entiers
(Pour révisions et approfondissements)
Ce point n'étant pas essentiel vous pouvez faire cet exercice plus tard dans le cadre de révisions:
- 
faites des expériences avec la représentation binaire d’un entier int ixen invoquantInteger.toBinaryString(ix). (comme il n’y a pas d’alignement avec des zéros à gauche il faudra faire quelques efforts pour "visualiser" ces zéros).
- 
faites des expériences avec les opérations "bit à bit": & | ~
compatibilités entre types
(Pour révisions et approfondissements)
Dans le code suivant :
int x;
short y = 0x7FF;
       // VOTRE CODE ICI- 
affecter yàx.
- 
déclarer une valeur de type charet de nomcaret l’initialiser avec une valeur quelconque.
- 
affecter caràx.
- 
essayer d’affecter carày: expliquer ce qui arrive.
Exemples
opérations sur les types entiers
 int ix ;
//un "int" avec valeur négative
ix = -128 ;
//un "int" avec valeur positive
ix = 128 ;
//un "int" et valeur en hexadécimal 0xFFFF
ix = 0xFFFF ;
//idem et valeur 0xFFFFFFFF
ix = 0XFFFFFFFF ;
//un "int" avec valeur 107374757677
// ix = 107473757677 ; ne s'exécute pas
ix = 1074737576 ;
// experimentations sur des opérations
// Essayons des tests très divers
-ix ;
ix + 1  ;
ix + ix ;
ix * 2  ;
ix-12345 ;
// multiplication
1223456 * 2 ;
1223456 * -2 ;
-1223456 * -2 ;
// modulo
13%7;
-13%7;
13 % -7;
-13 % -7;
// division
13/7;
ix/-1;
0/ix;
int iy = 0 ;
ix/iy;virgule flottante: types et opérations
Dans ces corrigés une petite anticipation: on utilise un message (entre guillemets) et on rajoute (par un signe plus) une valeur à ce message … nous verrons très rapidement une explication.
double val = 3.14;
double big = 6.02E23;
big * 2.;
123.4E-128D;
-1D / 0D;
10D / 3.;
2.7 - 3.;
2. % -3.;
-2. % 3.;
// valeurs particulières (petites et grandes)
double dx = 1.0E+308;
double dy = 1.0E-323;
"1.0E+308 + 1 :" + (dx + 1);
"1.0E-323 - 1 :" + (dy - 1);
"1.0E+308 + 2 :" + (dx + 2);
"1.0E+308 + 10 :" + (dx + 10);
"1.0E+308 + 1.0E+308 :" + (dx + dx);
"1.0E-323 - 1.0E-323 :" + (dy - dy);
"-1.0E-323 + 1.0E-323 :" + (-dy + dy);
// bien regarder celle-ci !
"-1.0E-323 / 100 :" + (-dy / 100.);operations impliquant des types différents
 double montant = 22.1;
 int taux = 10 ;
 // attention: la division doit se faire en arithmétique flottante !
 double resultat = montant / (1 + ((50 -taux)/1000.0)) ;
 // prière de conserver l'opération (50 - taux) en opération entière
// donc possible (((double) (50-taux)) /1000)autres exercices sur des entiers
byte bx =   0X7F ;
short sx = 2048 ;
++bx;
bx--;
bx;
sx *= 2;
sx;
sx %= 777 ;
sx;
sx %= -111 ;type booléen et opérations rendant des booléens.
 int x = 10 ;
 int y = -1 ;
 double valx = 10. ;
 double valy = -1;
 x > y ;
 x >= y ;
 valx < valy ;
 valx <= valy ;
 x == y ;
 valy != valx ;
 x == valx ;
(x > y) && (x == valx);
(x <= y) && (x == valx);
(x == valx) || (x <= y);
 ! (x <= valx );
int max = x > y ? x : y ;opérations "bit à bit" sur des entiers
// essayez d'aligner les résultats : pas de zéros en tête ici
// (c'est possible mais on a simplifié)....
"128 : " + Integer.toBinaryString(128);
"-128 : " + Integer.toBinaryString(-128);
"128>>2 : " + Integer.toBinaryString(128>>2);
"-128>>2 : " + Integer.toBinaryString(-128>>2);
"-128>>>2 : " + Integer.toBinaryString(-128>>>2);
"0xFFF : " + Integer.toBinaryString(0xFFF);
"0xFFF&0xFF : " + Integer.toBinaryString(0xFFF&0xFF);compatibilités entre types
int x;
short y = 0x7FF;
x = y;
char car = 'A';
x = car; // on peut affecter un "char" à un "int"
// y = car ; ne marche pas !
// un "char" n'est pas affectable à un "short"
// même s'ils ont la même taille (2 octets)
// l'un est signé , l'autre pas