2016-03-31 1 views
0

J'écrit le code en Java et a obtenu la sortie comme 2 equals 11 Code .Mon estJava Concaténation donnant comme sortie 2 est égale à 11 sur concat 1 + 1 + "est égal à" + 1 + 1

public class StringPrct 
{ 
public static void main(String[]args) 
{ 
String s= 1+1+" equals "+1 +1; 
System.out.println(s); 
} 
} 

Maintenant, la question est pourquoi je ne reçois pas de sortie comme 2 equals 2. L'ajout d'un caractère numérique à une chaîne donne une chaîne.

+0

C'est parce que vous mettez des espaces entre les deux derniers. Soyez prudent, ils ont de l'importance. –

+0

Non sur l'enlèvement d'espace aussi je reçois la même sortie. –

Répondre

6

L'opérateur + a le same precedence whether it's addition or concatenation, et ses associés de gauche à droite. Alors:

1 + 1 + " equals " + 1 + 1 

évalue comme

(((1 + 1) + " equals ") + 1) + 1 
((2 + " equals ") + 1) + 1 
("2 equals " + 1) + 1 
"2 equals 1" + 1 
"2 equals 11" 

Si vous voulez remplacer, vous devez fournir entre parenthèses:

1 + 1 + " equals " + (1 + 1) 

Cela devient:

((1 + 1) + " equals ") + (1 + 1) 
(2 + " equals ") + (1 + 1) 
"2 equals " + (1 + 1) 
"2 equals " + 2 
"2 equals 2" 

Pour plus de clarté , vous devriez probablement ajouter t il entre parenthèses à la première 1 + 1 aussi bien, de sorte que quelqu'un lisant votre code ne doit pas faire l'exercice mental d'ajouter entre parenthèses et l'évaluation vers le bas:

(1 + 1) + " equals " + (1 + 1) 
1

1 + 1 vaut 2 puisque vous ajoutez un int à int 2 + "equals" est une chaîne toute chose après sera juste concaténée.

1

Après une chaîne de caractères, Java voit d'autres arguments concaténés comme ayant besoin de l'appel de toString(), apparemment. Vous obtenez une sortie correcte si vous donner un indice sur Java pour l'opérateur en mettant vos opérations parens:

String s= (1+1) +" equals "+ (1 +1); 
5

1 + 1 est entier (2)

2 + " equals " est coulé à cordes (2 equals)

"2 equals " + 1 est une chaîne (2 equals 1)

"2 equals 1" + 1 est une chaîne (2 equals 11)

Il devrait être (1 + 1) + " equals " + (1 + 1)