POO Rappels Compilation en ligne de commande : Configurer le path : set path=%path%;C:\Program Files\Java\jdk\bin Compiler tous les fichiers java : -d pour destination Exécuter une classe (avec un main) : javac -d build/classes src/package/package1/*.java java -cp build/classes package.package1.NomClasse -cp pour classpath Généralités et conventions : 2 possibilités pour une classe : public NomClasse {} => public, le fichier doit porter le nom de la classe (rien) NomClasse {} => package, le fichier peut s'appeler autrement, on peut même mettre autant de classes que voulu dans le fichier Il est convenu de n’utiliser que des lettres minuscules, chiffres, point pour nommer un package. Si NomClass est dans NomPackage, le nom complet de la classe NomClasse devient NomPackage.NomClasse, c’est pourquoi on utilise pour exécuter la commande : java NomPackage.NomClasse Les classes StringBuffer et StringBuilder Le caractère immuable de la classe String peut poser problème lors de nombreux traitements sur des objets de cette classe. En effet lors d’une modification successive d’un objet String, exemple : String s = ""; for (int i = 0; i < tab.length; i++){ s += tab[i] + ", "; } On crée en réalité différents objets String qui viennent remplacer le premier. Le temps d’exécution pour la création est peut prendre bien plus de temps que la modification d’un élément. C’est pourquoi il existe les classes StringBuffer et StringBuilder, qui représentent également une chaine de caractères mais les objets de type StringBuffer et StringBuilder sont mutables (la différence entre StringBuffer et StringBuilder vient du fait que toutes les méthodes de StringBuffer sont synchronisées, adapté aux programmes multithreads, contrairement aux méthodes de StringBuilder, plus rapide dans le cas de programme avec un seul thread). La manière de concaténer avec la classe String varie également : StringBuilder bui = new StringBuilder(); bui.append ("Hell"); bui.append (" World "); bui.append ('!'); bui.insert (4, 'o'); //Insert le "o" à la position 4 bui.deleteCharAt(1); //Supprime le "e" à l'indice 1 System.out.println (bui); // Affiche "Hllo World !" String str = new String(); str = "Hell"; str += " World "; str += '!'; //Obligation de concaténer en fin de chaine, il faut se servir de substring (dispo également dans StringBuilder) System.out.println (str); // Affiche "Hell World !"