+ 2

Java Print

Hi all! I've found this code on Challenge questions but I have no clue what is happening. int a = 10; int b = 20; System.out.print(a + b + “ “ + a + b); Why is the output 30 1020 and not 30 30 ? What does double quote make to the print so that no addition is made? Thx in advance :)

21st May 2019, 2:32 PM
Augusto
Augusto - avatar
4 odpowiedzi
+ 1
Nice one. Well indeed it's due to the + operator. When it evaluates what's inside the parentheses, it sees : - a + b : the addition of two int (let's call it c) - c + " " : an int and a String -> convert the int into a String and add the String's (let's call the result s) - s + a : a String and an int -> same as before : converts the int into a String and add them together - the last one (+b) works exactly the same way as the previous ones. A way to obtains 30 30 is to write : System.out.println(a + b + " " + (a + b)); By putting the second "a+b" in parentheses, we change the order of evaluation and this leads to adding them together before adding them to a String
21st May 2019, 3:22 PM
ThewyShift
ThewyShift - avatar
+ 3
The " " is of string type, rather than int. Because math deals with numbers, rather than strings, the string is causing it to implicitly typecast the rest of it as a string rather than keeping them as an int. So now the " " + a + b are all strings, it's simply concatenating it, which is why you get 1020 for that portion of it. Hope that helps!
21st May 2019, 2:38 PM
AgentSmith
0
Thank you both! rly appreciate it
21st May 2019, 9:41 PM
Augusto
Augusto - avatar
0
You're welcome !
21st May 2019, 9:42 PM
ThewyShift
ThewyShift - avatar