OVH Cloud OVH Cloud

test d'une chaine vide, orthodoxie ???

7 réponses
Avatar
yvon.thoravalNO-SPAM
j'ai une chaine de ccaractères qui vient d'un fichier
*.properties , cette chaine et qqf vide, si je teste :

if(!(jp_combo == "")) {
ou :
if(jp_combo != "") {

ça ne donne pas le résultat escompté, ce qui "marche" :

if (p_combo.length() != 0) {

quelle est l'orthodoxie, son explication ?

NB : je "passe" par BeanShell...


--
yt

7 réponses

Avatar
no.bcausse.spam
Yvon Thoraval wrote:

j'ai une chaine de ccaractères qui vient d'un fichier
*.properties , cette chaine et qqf vide, si je teste :

if(!(jp_combo == "")) {
ou :
if(jp_combo != "") {



surement
if(!jp_combo.equals("")) {

--
bruno Causse
http://perso.wanadoo.fr/othello

Avatar
SK
Yvon Thoraval wrote:
j'ai une chaine de ccaractères qui vient d'un fichier
*.properties , cette chaine et qqf vide, si je teste :

if(!(jp_combo == "")) {
ou :
if(jp_combo != "") {

ça ne donne pas le résultat escompté, ce qui "marche" :

if (p_combo.length() != 0) {

quelle est l'orthodoxie, son explication ?

NB : je "passe" par BeanShell...


En effet, lorsqu'il est appliqué à deux instances de classe, l'opérateur
== teste l'égalité en adresse mémoire et non l'égalité des champs. Voilà
pourquoi ton jp_combo (même s'il contient la chaine de caractères "") ne
sera jamais égale à une instance anonyme "" qui n'a pas le même
emplacement mémoire.
Comme le faisait remarquer le post plus haut, il faut donc utiliser la
méthode interne equals(String s) afin de tester l'égalité entre deux
chaînes.

SK.

Avatar
yvon.thoravalNO-SPAM
SK wrote:


En effet, lorsqu'il est appliqué à deux instances de classe, l'opérateur
== teste l'égalité en adresse mémoire et non l'égalité des champs. Voilà
pourquoi ton jp_combo (même s'il contient la chaine de caractères "") ne
sera jamais égale à une instance anonyme "" qui n'a pas le même
emplacement mémoire.
Comme le faisait remarquer le post plus haut, il faut donc utiliser la
méthode interne equals(String s) afin de tester l'égalité entre deux
chaînes.


ok, merci à tout deux...
--
yt

Avatar
Valère viandier
Par mesure de sécurité, test plutôt

if (! ("".equals(chaine) )

En effet, l'instance "" ne peu jamais être nule ce qui éviteras un
NullPointerException


"Yvon Thoraval" a écrit dans le message de
news:1gc52r7.1pfaojdkzjxxsN%
SK wrote:


En effet, lorsqu'il est appliqué à deux instances de classe, l'opérateur
== teste l'égalité en adresse mémoire et non l'égalité des champs. Voilà
pourquoi ton jp_combo (même s'il contient la chaine de caractères "") ne
sera jamais égale à une instance anonyme "" qui n'a pas le même
emplacement mémoire.
Comme le faisait remarquer le post plus haut, il faut donc utiliser la
méthode interne equals(String s) afin de tester l'égalité entre deux
chaînes.


ok, merci à tout deux...
--
yt



Avatar
yvon.thoravalNO-SPAM
Valère viandier wrote:


if (! ("".equals(chaine) )

En effet, l'instance "" ne peu jamais être nule ce qui éviteras un
NullPointerException


ok, merci.
--
yt

Avatar
cilovie
essaye commons-lang de jakarta
(http://jakarta.apache.org/commons/lang/api/org/apache/commons/lang/StringUt
ils.html)

la méthode IsEmpty ou IsBlank devrait t'aider (test sur le null inclus avec
le trim) pour diff voir la javadoc
"Yvon Thoraval" a écrit dans le message de
news:1gc6pxw.qhf22nm83xe1N%
Valère viandier wrote:


if (! ("".equals(chaine) )

En effet, l'instance "" ne peu jamais être nule ce qui éviteras un
NullPointerException


ok, merci.
--
yt



Avatar
yvon.thoravalNO-SPAM
cilovie wrote:

essaye commons-lang de jakarta
(http://jakarta.apache.org/commons/lang/api/org/apache/commons/lang/StringUt
ils.html)

la méthode IsEmpty ou IsBlank devrait t'aider (test sur le null inclus avec
le trim) pour diff voir la javadoc


ouais, super ça, merci !

pas mal de chose intéressante dans ces "Commons" de Jakarta...
--
yt