Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
1
Puzzler
2
Puzzler C'est quoi un Puzzler ?
3
Modèle d'exécution Java
Puzzler Modèle d'exécution Java
4
Puzzler Qu'affiche ce code ? public class Parsing { /**
* Returns Integer corresponding to s, or null if s is null. NumberFormatExceptionif s is non null and * doesn't represent a valid integer */ public static Integer parseInt(String s) { return (s==null)?(Integer)null:Integer.parseInt(s); } public static void main(String[] args) { System.out.println(parseInt("-1") + " " + parseInt(null) + " " + parseInt("1"));
5
Puzzler - Réponse NPE car null est un Integer et Integer.parseInt() renvoie un int donc il y a un auto-unboxing de null. public class Parsing { public static Integer parseInt(String s) { return (s==null)?(Integer)null:Integer.parseInt(s); } public static void main(String[] args) { System.out.println(parseInt("-1") + " " + parseInt(null) + " " + parseInt("1"));
6
Puzzler - Fix Evitez de mixer type primitif et wrapper, surtout avec ?: Attention au boxing/unboxing de null public class Parsing { public static Integer parseInt(String s) { return (s==null)?null:Integer.valueOf(s); } public static void main(String[] args) { System.out.println(parseInt("-1") + " " + parseInt(null) + " " + parseInt("1"));
7
Puzzler Qu'affiche ce code ? public class Parsing { /**
* Returns Integer corresponding to s, or null if s is null. NumberFormatExceptionif s is non null and * doesn't represent a valid integer */ public static Integer parseInt(String s) { return (s==null)?(Integer)null:Integer.parseInt(s); } public static void main(String[] args) { System.out.println(parseInt("-1") + " " + parseInt(null) + " " + parseInt("1"));
8
Puzzler - Réponse NPE car null est un Integer et Integer.parseInt() renvoie un int donc il y a un auto-unboxing de null. public class Parsing { public static Integer parseInt(String s) { return (s==null)?(Integer)null:Integer.parseInt(s); } public static void main(String[] args) { System.out.println(parseInt("-1") + " " + parseInt(null) + " " + parseInt("1"));
9
Puzzler - Fix Evitez de mixer type primitif et wrapper, surtout avec ?: Attention au boxing/unboxing de null public class Parsing { public static Integer parseInt(String s) { return (s==null)?null:Integer.valueOf(s); } public static void main(String[] args) { System.out.println(parseInt("-1") + " " + parseInt(null) + " " + parseInt("1"));
10
Puzzler Qu'affiche ce code ? public class BeyondCompare{
public static void main(String[] args) { Object o=3; System.out.println(new Double(3).compareTo(o)==0); }
11
Puzzler - Réponse Il compile en 1.4 (mais CCE à l'exécution) mais pas en 1.5 !! Comparable indique avec quoi comparé Et Double est définie comme ceci : public interface Comparable<T> { int compareTo(T t); // avant c'était Object } public class Double extends Number implements Comparable<Double> { ... }
12
Puzzler - Fix Il faut utiliser un Double : Et donc comparer les Double entre eux Normalement, la compatibilité binaire est assurée, ici non car cela permet de détecter une CCE à la compilation public class BeyondCompare{ public static void main(String[] args) { Double o=3; System.out.println(Double.valueOf(3).compareTo(o)==0); }
13
Puzzler Qu'affiche ce code ? public class Fibonacci {
private static final int LENGTH=7; public static void main(String[] args) { int[] fib=new int[LENGTH]; fib[0]=fib[1]= 1; // First 2 Fibonacci numbers for (int i=2; i<fib.length;i++) fib[i]=fib[i -2]+fib[i -1]; System.out.println(Arrays.asList(fib)); }
14
Puzzler - Réponse Une valeur de hachage [[I@ad3ba4
Arrays.asList(T...) prend un tableau d'objet pas un tableau de type primitif !! public class Fibonacci { private static final int LENGTH=7; public static void main(String[] args) { int[] fib=new int[LENGTH]; fib[0]=fib[1]= 1; // First 2 Fibonacci numbers for (int i=2; i<fib.length;i++) fib[i]=fib[i -2]+fib[i -1]; System.out.println(Arrays.asList(fib)); }
15
Puzzler - Fix Integer != int
Ne pas utiliser Arrays.asList() juste popur faire l'affichage, utiliser Arrays.toString() !! public class Fibonacci { private static final int LENGTH=7; public static void main(String[] args) { int[] fib=new int[LENGTH]; fib[0]=fib[1]= 1; // First 2 Fibonacci numbers for (int i=2; i<fib.length;i++) fib[i]=fib[i -2]+fib[i -1]; System.out.println(Arrays.toString(fib)); }
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.