1 / 37

J100 (JSB)

J100 (JSB). Java : Syntaxe de Base. Les variables système. CLASSPATH=c:Rep_JDKlibclasses.zip;. Indique le chemin des bibliothèques de classes, aussi bien pour la compilation que l ’exécution. Le path PATH=$PATH:$Rep_JDKbin Indique la situation de java et javac

Download Presentation

J100 (JSB)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. J100 (JSB) Java : Syntaxe de Base ~ Brigitte Groléas ~

  2. Les variables système • CLASSPATH=c:\Rep_JDK\lib\classes.zip;. Indique le chemin des bibliothèques de classes, aussi bien pour la compilation que l ’exécution. • Le path PATH=$PATH:$Rep_JDK\bin Indique la situation de java et javac • La documentation de sun en api java.sun.com/j2se/1.5.0/docs/api/index.html • JAVA_HOME doit indiquer la racine de Java ~ Brigitte Groléas ~

  3. Historique • En 1990James Gosling : langage « Oak » pour faciliter l’implémentation de logiciels pour l’électronique grand publique • 1994 : explosion du Web sur l’Internet • 1995 : Gosling présente la version Bêta de HotJava • 1996 : Sun rend publique la première version Bêta du JDK (Java Development Kit) • 1997 : Sun sort la version 1.1 du JDK qui reprend l’intégralité des API du JDK 1.0 • 2005 : java 1.5 dernière version ~ Brigitte Groléas ~

  4. Présentation du langage Java • Simple et orienté objet • Robuste, fiable et sûr • Efficace et riche • Interprété, indépendant de l’architecture et rapide • Portable • Multitâche (multithread) • Réparti • Dynamique et distribué ~ Brigitte Groléas ~

  5. Structure d’une application Java public class Essai { public static void main( String argv[] ) { System.out.print( "coucou\n" ); } } Fichier source une seule classe publique nom du fichier = nom de la classe publique .java  javac Essai.java Le code est exécuté sur la machine virtuelle java (JVM pour Java Virtual Machine). java Essai ~ Brigitte Groléas ~

  6. Programmation modulaire : les packages Lepackage « java.lang » est automatiquement importé dans tous les sources Java. Répertoire : toto/titi/tata Nom du package : toto.titi.tata import toto.titi.tata.essai; import toto.titi.tata.*; java.applet Classes pour implémenter les applets. java.awt Classes pour les graphiques (GUI) . java.awt.image Classes pour le traitement des Images java.awt.peer Interfaces avec les environnements natifs java.io Classes pour les entrées/sorties java.lang Classes de base du langage. java.net Classespour la communication réseaux. java.util Classes d’utilitaires. ~ Brigitte Groléas ~

  7. Les variables • Peuvent être de 2 natures : • primitive • référence à un objet ou à un tableau • Toute variable locale doit être initialisée explicitement avant de pouvoir utiliser sa valeur • Ce n'est pas le cas des variables d'instance ~ Brigitte Groléas ~

  8. Les packages • L'instruction package indique à quel package appartient la classe du fichier. • C'est la première instruction du fichier • Par défaut une classe appartient au paquetage anonyme • L'instruction import permet de référencer des classes sans les préfixer du nom de leur package. ~ Brigitte Groléas ~

  9. Types gérés par valeur : types primitifs type valeur par défaut char caractère unicode \u0000 boolean valeur booléenne false byte entier signé 8 bits 0 short entier signé 16 bits 0 int entier signé 32 bits 0 long entier signé 64 bits 0 float flottant 32 bits 0.0 f double flottant 64 bits 0.0 ~ Brigitte Groléas ~

  10. Des classes associées • Des classes sont Boolean, Character, Integer, Long, Float et Double. Elles permettent de définir des constantes et des méthodes utiles. short et byte ne sont que des types de stockage • Pour créer des objets à partir de type primitifs • Integer.parserInt("123"); • MIN_VALUE Integer i = new Integer(1); int j = i.intValue(); ~ Brigitte Groléas ~

  11. Types gérés par références : Les objets • Instanciation et destruction des objets • ClassName x; //Crée la référence • x = new ClassName(); //Crée l’objet et le référence par x • 2 variables différentes peuvent désigner le même objet  • ClassName x = new ClassName(); • ClassName y = x; //x et y désignent tous deux le même objet ! ref obj Tas ~ Brigitte Groléas ~

  12. Copier un objet : la méthode « clone() » si elle est implémentée par la classe en question (Classes implémentant l’interface « Cloneable » ). • ClassName x = new ClassName(); • ClassName y = x.clone(); • Tester l’égalité entre 2 objets : une méthode spécialement conçue pour comparer les objets. En java, un certain nombre de classes redéfinissent la méthode « equal() » de la classe « Object ». ~ Brigitte Groléas ~

  13. Les Tableaux • Les références int tab1[]; ou int [] tab1; ClassName tab2[]; ou ClassName [] tab; • Instanciation de tableaux • tab1= new int[100]; • tab2= new ClassName[10]; • int tab[] = { 1, 2, 3, 4, 5}; • String dico[]= { "hiboux", "choux", "genoux" }; La création d’un tableau ne crée pas les objets contenus dans le tableau Un tableau est considéré comme un objet. Il est manipulé via une référence ~ Brigitte Groléas ~

  14. À vous … (sur le papier) • Réservez une référence velo sur un tableau d’entiers • Sur la référence velo, intanciez un tableau de 10 entiers • Réserver un entier i, initialisé à 0 • Tant que i est plus petit que 10 • Mettre 12 dans la ième case de velo • Augmenter i de 1 • Fin de la boucle ~ Brigitte Groléas ~

  15. int[] velo; • velo = new int[10]; • int i = 0; • while( i < velo.length ) { • velo[i] = 12; • i = i +1; • } ~ Brigitte Groléas ~

  16. int[] velo; • velo = new int[10]; • for(int i = 0; i < velo.length; i = i +1) { • velo[i] = 12; • } ~ Brigitte Groléas ~

  17. Tableaux multidimensionnels int tab[][][] = new int[5][4][3]; • int tab[][] = new int[3][]; • 3 références sur des int[] • tab[0] = new int[2]; • 1er s/s tableau : 2 cases • tab[1] = new int[3]; • 2eme s/s tableau : 3 cases • tab[2] = new int[4]; • 3eme s/s tableau : 4 cases Il n’est pas obligatoire de stipuler le nombre d’éléments contenus pour chaque dimension (seule la première est obligatoire) int tab[][] = { { 1, 2}, { 3, 4, 5 }, { 6, 7, 8, 9 } }; ~ Brigitte Groléas ~

  18. À vous … • Créer une référence titi sur un tab à 2 dimensions d’entiers • Sur la référence titi créer un tableau de 5 tableaux d’entiers • Chacune des cases de titi contiendra la référence d’un tableau d’entiers • Dans titi[0] créez un tab de 1 entier • Dans titi[1] créez un tab de 2 entiers • Dans titi[2] créez un tab de 3 entiers • Dans titi[3] créez un tab de 4 entiers • Dans titi[4] créez un tab de 5 entiers ~ Brigitte Groléas ~

  19. Accès aux éléments et aux dimensions int tab[][]= new int[10][20]; System.out.println( tab.length ); // imprime 10 System.out.println( tab[0].length ); // imprime 20 Tous les accès aux tableaux sont contrôlés. Une erreur (Exception) de type : ArrayIndexOutOfBoundsException est générée en cas de débordement. ~ Brigitte Groléas ~

  20. Les Chaînes de caractères : String java.lang.String • String s = "Bonjour"; • String s = "Coucou"; • StringBuffer buf = new StringBuffer( s ); • buf.append( " me revoilou" ); • System.out.println( buf ); • l’opérateur « + » int i = 5; System.out.println( "i = " + i ); Si une opérande n’est pas de type String, elle est convertie en une chaîne pour les types primitifs ou via la méthode « toString() » pour les types non-primitifs. ~ Brigitte Groléas ~

  21. Les Opérateurs 1 PREC NOM OPERANDE ASSOCIATIVITE 1 ++, --, +, - numérique D ~ entier D ! booleen D new, (type) tout type D 2 *, /, % numérique G 3 +, - numérique G + String G 4 >>, <<, >>> entier G 5 >, >=, <, <= numérique G instanceof objet G ~ Brigitte Groléas ~

  22. Les Opérateurs 2 PREC NOM OPERANDE ASSOCIATIVITE 6 ==, != primitif,référence G 7 & entier ou booleen G 8 ^ entier ou booleen G 9 | entier ou booleen G 10 && booleen G 11 || booleen G 12 ? : booleen,exp,exp D 13 =, +=, -=, *=, /=, %=, variable, exp D <<=, >>=,>>>=, &=, |=, ^= ~ Brigitte Groléas ~

  23. Sens d'évaluation La flèche « --> » indique que les opérateurs sont évalués de la gauche vers la droite. C'est le cas de la majorité des opérateurs. La flèche « <-- » indique que Les opérateurs sont évalués de la droite vers la gauche. C'est le cas des opérateurs unaires et des opérateurs d'affectations 3 + 4 - 7 + 6 - 5 <==> (((3 + 4) - 7) + 6) - 5 3 + 12 * 5 / 3 <==> 3 + ( (12 * 5) / 3 ) x < 2 || x > 5 && x < 7 <==> (x<2) || ((x>5) && (x<7)) x = y = z = 5 <==> x = ( y = (z = 5) ) x = y = z++ * -a <==> x = (y = ((z++) * (-a))) x = y > 7 <==> x = ( y > 7 ) ~ Brigitte Groléas ~

  24. Opérateurs Arithmétiques - Moins unaire -X - Division X / Y - Multiplication X * Y - Modulo X % Y - Addition X + Y - Soustraction X - Y Le modulo (reste de la division entière) ne peut s'employer que sur des types entiers Division. est entière lorsque les 2 termes de l'expression sont entiers. Si 1 des termes est « float » ou « double », elle sera réelle. ~ Brigitte Groléas ~

  25. Opérateurs binaires X = 0 0 1 1 0 0 1 1 ----------------- ~X = 1 1 0 0 1 1 0 0 Complément binaire Et binaire Ou inclusif binaire Ou exclusif binaire X = 1 1 0 0 1 0 1 1 Y = 1 1 1 0 0 0 1 1 ----------------- X & Y = 1 1 0 0 0 0 1 1 X = 1 1 0 0 1 0 1 1 Y = 1 1 1 1 0 0 0 1 ------------------------ X | Y = 1 1 1 1 1 0 1 1 X = 1 1 0 0 1 0 1 1 Y = 1 1 1 1 0 0 0 1 ------------------------ X ^ Y = 0 0 1 1 1 0 1 0 ~ Brigitte Groléas ~

  26. Exemples Exemple: Isoler les 3 derniers bits d'un mot. X = b7 b6 b5 b4 b3 b2 b1 b0 7 = 0 0 0 0 0 1 1 1 ------------------------- X & 7 = 0 0 0 0 0 b2 b1 b0 Exemple: tester si le bit « b3 » du mot « X » est à « 1 ». X = b7 b6 b5 b4 b3 b2 b1 b0 8 = 0 0 0 0 1 0 0 0 ------------------------- X & 8 = 0 0 0 0 b3 0 0 0 ~ Brigitte Groléas ~

  27. Décalage Décalage à droite Décalage à gauche 5 = 0 0 0 0 0 1 0 1 ------------------------ 5 >> 1 = 0 0 0 0 0 0 1 0 = 5/2 = 2 (division entière) 5 = 0 0 0 0 0 1 0 1 ---------------- 5 << 3 = 0 0 1 0 1 0 0 0 = 5 * 8 = 40 ~ Brigitte Groléas ~

  28. Opérateurs d'Inc/Décrémentation • - pré-incrémentation ++X • - post-incrémentation X++ • - pré-décrémentation --X • - post-décrémentation X-- « X = Y++; » revient à faire: Tmp = Y; Y = Y + 1; X = Tmp; « X = ++Y; » revient à faire: Y = Y + 1; X = Y; ~ Brigitte Groléas ~

  29. Opérateur Conditionnel <condition> ? <expression1> : <expression2> a = ( a < b ) ? a + b : a - b; équivaut à a += ( a < b ) ? b : -b; équivaut à if( a < b ) a = a + b; else a = a - b; ~ Brigitte Groléas ~

  30. À vous … vrai ou faux • char c; déclare un caractère sur 8 bits • boolean b; déclare une valeur booléenne • short i; déclare un entier signé 8 bits • int j; déclare un entier signé 32 bits • ClassName x; déclare une instance x de la classe ClassName. • tab1= new int[100]; déclare un tableau de 100 entiers • int tab[][] = new int[10][10]; déclare un tableau à 2 dimensions de 100 entiers • String dico[]= { "hiboux", "choux", "genoux" }; déclare un tableau de 3 Strings initialisées ~ Brigitte Groléas ~

  31. À vous … vrai ou faux Identifier les lignes correctes pour utiliser la classe InputStream du package java.io • import java.io.*; • import java.io.InputStream; • import io.*; • import java.*; • aucun import n'est nécessaire, ce package est importé par défaut ~ Brigitte Groléas ~

  32. À vous … vrai ou faux Pour créer un fichier Dessin.class : • Le programme source doit s'appeler Dessin.javac • Une classe du fichier source doit porter le nom de Dessin • Une fonction main (et une seule) doit être incluse dans n'importe laquelle des classes du fichier source ~ Brigitte Groléas ~

  33. Structures de contrôle sélectives switch( expression ) { case constante_1: instruction_1.1 instruction_1.2 ... case constante_2: instruction_2.1 instruction_2.2 ... case constante_n: instruction_n.1 ... default: instruction_n+1.1 } if( condition ) { instructions à faire si vrai } else { instructions à faire si faux } break ~ Brigitte Groléas ~

  34. Les Itérations while( condition ) { instructions à exécuter tant que la condition est vraie (i.e. différente de zéro) } do { instructions } while( condition ); for( [initialisation] ; [condition] ; [incrémentation] ) { instructions } ~ Brigitte Groléas ~

  35. Depuis Java 5 • int [] tab = new int[10]; • for (int i : tab ) • somme = somme + tab[i]; ~ Brigitte Groléas ~

  36. Les ruptures • CONTINUE Permet de « remonter » à la partie « condition » dans la boucle courante. Empêche l’exécution des instructions qui la suivent. Généralement utilisée conjointement avec une instruction « if » ou « switch » imbriqué dans la boucle. • BREAK Permet de sortir d'une boucle (ou d'un « switch ») avant la fin de la boucle (ou du « switch ») Généralement utilisée conjointement à une instruction « if » imbriquée dans la boucle. • return Permet de sortir d’une méthode pour retourner à la méthode appelante. ~ Brigitte Groléas ~

  37. Les blocs labelisés un: while ( ...) { ... deux: for(...) { ... trois: while (...) { ... if (...) continue un; if (...) break deux; continue; } • } } Reprend sur la première boucle while Quitte la boucle for Reprend sur deuxième boucle while (trois) ~ Brigitte Groléas ~

More Related