Comparaison avec une chaine de caractère vide

codefree Messages postés 8 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 19 août 2004 - 3 août 2004 à 18:13
fmazoue Messages postés 335 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 1 septembre 2015 - 4 août 2004 à 20:30
salut à tous j'ai une petite question de débutant

je ne dois rien afficher lorsque ma variable ne contient rien (en JSP)
ma variable se trouve dans une base de données

j'ai essayé :

String mavariable = "";
mavariable = resultSet.getString("mavariable");
if (mavariable != "") {
}

j'ai essayé

if (mavariable != null) {}

mais rien ne marche quelqu'un saurait m'éclairer, merci beaucoup

7 réponses

fmazoue Messages postés 335 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 1 septembre 2015 1
3 août 2004 à 18:49
je crois que pour comparer le sSTring il faut utiliser .equals

sa doit etre un truc genre if(mavariable.equals("") == false)

essaye ca !
niarf :-p
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
3 août 2004 à 20:00
:big) Neodante :big)

Juste un truc de prog pour fmazoue, lorsque l'on fait un test qui renvoie déjà un booléen, cela ne sert à rien de remettre une condition. Par conséquent pour optimiser ton code (et c'est vrai en C, ...) :

if (!maVar.equals("")) ... est plus rapide ... non ???

En plus à la place du equals(""), je mettrais plutot length() == 0 c'est plus rapide (regarde les codes sources de la classe String) ...

Maintenant pour codefree, lorsque tu fais :

maVar == null -> ce qui est bon pour n'importe quel objet, tu compare l'allocation mémoire de celui-ci, est-il alloué ou non ???

Egalement très important, si tu reprends ce que je viens de dire, on ne compare JAMAIS une chaine de caractères avec des opérateurs (seul l'opérateur + est surchargé -> concaténation) car sinon tu compare les adresses mémoires ... en gros tu veux savoir si 2 var représente le même objet en mémoire mais pour StringTOTO == "", cela te renverra toujours faux puisque l'expression "" te crée une nouvelle chaine en mémoire (vide !) ...

J'espère que tu as compris ce que je voulais dire !!! lol

Voilà pour l'éclaircissement !!! ;-)
@+

[Responsable www.neogamedev.com]
0
cs_Dobel Messages postés 333 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 23 novembre 2009 1
3 août 2004 à 22:48
je rajoute un petit truc à cette magnifique explication :
si maVariable est nulle, tu va avoir une exception inutile (puisque null est bien different de "")
donc tu peux tester
"".equals(maVariable)
qui marche même si maVariable est null

il faut savoir aussi que lorsque tu déclare tes chaines par
String s = "uneChaine"
String s2 = "uneChaine"

il se créé 1 et 1 seule String en mémoire et s et s2 pointent vers la même

par exemple :
String temp1 = "1";
System.out.println("1".equals(temp1));//true

String temp2 = "1";
System.out.println(temp1.equals(temp2));//true

String temp3 = "123456".substring(0, 1);
System.out.println(temp3 == "1");//false
System.out.println("1".equals(temp3));//true

String temp4 = ""+'1';
System.out.println(temp4 == "1");//true toujours!!

c'est bô !!

A+

Dobeliou
[Il ne faut jamais jouer à saute-mouton avec une licorne]
0
cs_Dobel Messages postés 333 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 23 novembre 2009 1
3 août 2004 à 22:51
ERRATUM !!!!!!!!!!!

euh pour 1 et 2, c'est pas du tout ce que je voulais mettre

String temp1 = "1";
System.out.println("1" == temp1);//true

String temp2 = "1";
System.out.println(temp1 == temp2);//true !

Dobeliou
[Il ne faut jamais jouer à saute-mouton avec une licorne]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
3 août 2004 à 23:52
:big) Neodante :big)

Effectivement pour l'optimisation du "".equals() c'est la vraie bonne méthode du programmeur Java averti ... donc a utilisé de préférence .... on dit merci à Dobel pour ce complément !!! ;-)
@+

[Responsable www.neogamedev.com]
0
codefree Messages postés 8 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 19 août 2004
4 août 2004 à 13:23
Ok les gars vous êtes des starrrrrrrrrs ca marche du tonner merci beaucoup
0
fmazoue Messages postés 335 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 1 septembre 2015 1
4 août 2004 à 20:30
Oui euh bon d'accord, moi c vrai pour le moment temps que sa marche c déjà bien :-) ! pour les optimisation ce sera l'étape au dessus !
niarf :-p
0
Rejoignez-nous