45 votes

Cette évaluation 'if' en Java avec trois expressions simultanées

J'avais cette question dans mon test Java où je devais attribuer des valeurs à a et b afin que cette expression ait la valeur true:

 (a<=b && b<=a && a!=b)
 

Malheureusement, je n'avais aucune idée de la réponse.

79voto

Mena Points 12283

Il y a un truc tout simple ici.

Vous ne pouvez pas réfléchir à ces questions avec la logique booléenne. En utilisant cela, cette combinaison...

  • a est inférieur ou égal à b, et
  • b est inférieur ou égal à a, et
  • a n'est pas égal à b

...ne serait jamais retourné true.

Cependant, l' != opérateur compare les références, si ses opérandes sont des objets.

Donc, la suivante sera de retour true:

Integer a = 1;
Integer b = new Integer(1);
System.out.println(a<=b && b<=a && a!=b);

Ce qui se passe ici est: a comme une référence d'objet n'est pas égal à b comme un objet de référence, même si bien sûr ils détiennent l'égalité des valeurs entières.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X