Comparaison de chaine de caractères / Question à la con

Comparaison de chaine de caractères / Question à la con - Java - Programmation

Marsh Posté le 29-03-2010 à 22:22:17    

Voilà en bossant je me suis retrouvé nez à nez avec des tests genre:
 

Code :
  1. if( var == "value" )


 
pour tester la valeur d'une chaine de caractères (string)  :pfff:  :sweat:  
 
Or pour moi on doit toujours utiliser la méthode equals(), le == faisant une comparaison des références des objets.
Par curiosité (avant d'écraser le code trouvé sur le projet  :o ) j'ai fait le test suivant:
 
 

Code :
  1. String var = "test";
  2. System.out.println(var == "huhu" );
  3. System.out.println(var == "test" );


 
Qui me retourne "bien": false puis true.
Autrement dit ça a l'air de fonctionner quand une des opérandes est une chaine en dur constante  :sweat:  
 
Quelqu'un aurait une explication la dessus ?  [:littlebill]


---------------
"Tant qu'il y aura des hommes il y aura de comptoirs"
Reply

Marsh Posté le 29-03-2010 à 22:22:17   

Reply

Marsh Posté le 29-03-2010 à 22:31:30    

Moi j'me méfierais à ta place:

 
Code :
  1. String var = "test";
  2. String var2 = new StringBuffer("test" ).toString();
  3. System.out.println(var=="test" );
  4. System.out.println(var2=="test" );
 
Code :
  1. true
  2. false
 

L'explication c'est que ca compare bien la référence comme tu dis. Dans le premier cas, c'est probablement la JVM qui gère sa tambouille et se retrouve à mettre la meme référence, à vue de nez pour des raisons d'optimisation j'dirais. Maintenant, tu peux pas etre sur que ca soit consistant entre JVMs, et puis bon dès que tes Strings viennent d'ailleurs voilà quoi...


Message édité par lasnoufle le 29-03-2010 à 22:31:58

---------------
C'était vraiment très intéressant.
Reply

Marsh Posté le 29-03-2010 à 22:43:55    

m'ouais possible  [:klemton]  
bon ben je vais faire de l'écrasement de code :o
les gens en entreprise c'est de la folie "ben si t'as vu ça marche" sans chercher à comprendre  [:di_canio]


---------------
"Tant qu'il y aura des hommes il y aura de comptoirs"
Reply

Marsh Posté le 29-03-2010 à 23:04:18    

Reply

Marsh Posté le 29-03-2010 à 23:07:19    

D'accord, merci  [:implosion du tibia]


---------------
"Tant qu'il y aura des hommes il y aura de comptoirs"
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed