Java Programming - Operators and Assignments - Discussion
Discussion Forum : Operators and Assignments - Finding the output (Q.No. 11)
11.
What will be the output of the program?
class SC2
{
public static void main(String [] args)
{
SC2 s = new SC2();
s.start();
}
void start()
{
int a = 3;
int b = 4;
System.out.print(" " + 7 + 2 + " ");
System.out.print(a + b);
System.out.print(" " + a + b + " ");
System.out.print(foo() + a + b + " ");
System.out.println(a + b + foo());
}
String foo()
{
return "foo";
}
}
Answer: Option
Explanation:
Because all of these expressions use the + operator, there is no precedence to worry about and all of the expressions will be evaluated from left to right. If either operand being evaluated is a String, the + operator will concatenate the two operands; if both operands are numeric, the + operator will add the two operands.
Discussion:
12 comments Page 1 of 2.
Kush said:
8 years ago
In java, we have only operator precedence but not operand precedence.before applying any operator all operand will be evaluated from left to right.
Here, System.out.print(foo() + a + b + " "); foo34.
because of foo() will be evaluated first which returns string "foo" so if string first comes then the remaing value will be converted to the string like foo34 and
here, System.out.println(a + b + foo());7foo.
Here primitive value added first, because operator precedence and last string will be converted like 7foo
The string always convertes while primitives always added.
Here, System.out.print(foo() + a + b + " "); foo34.
because of foo() will be evaluated first which returns string "foo" so if string first comes then the remaing value will be converted to the string like foo34 and
here, System.out.println(a + b + foo());7foo.
Here primitive value added first, because operator precedence and last string will be converted like 7foo
The string always convertes while primitives always added.
Arjun said:
1 decade ago
Step1: s.o.p(""+7+2+""); this means adding with appending values 7+2=72 in this condition only.(Ans.72)
Step2: s.o.p(a+b) this means adding given values a=3,b=4 calculate a+b=7. (Ans.7)
Step3: s.o.p(""+a+b+""); this means adding with appending values 3+4=34 compare with step1.(Ans.34)
Step4: s.o.p(foo()+a+b+""); this means 1st applied to the foo() method. foo+3+4=foo34.(Ans.foo34).
Step5: s.o.p(a+b+foo()); this means adding to all values(only step5 values) ..3+4+foo=7foo(Ans.7foo)
Finally Answer : 72 7 34 foo34 7foo
Step2: s.o.p(a+b) this means adding given values a=3,b=4 calculate a+b=7. (Ans.7)
Step3: s.o.p(""+a+b+""); this means adding with appending values 3+4=34 compare with step1.(Ans.34)
Step4: s.o.p(foo()+a+b+""); this means 1st applied to the foo() method. foo+3+4=foo34.(Ans.foo34).
Step5: s.o.p(a+b+foo()); this means adding to all values(only step5 values) ..3+4+foo=7foo(Ans.7foo)
Finally Answer : 72 7 34 foo34 7foo
Naveen said:
3 years ago
@Naveen_bobby_ak.
Step1: " "+7+2+" " it's String Type not int o/t: 72
Step2: (a+b)=3+4=7 it's int type so addition o/t: 7.
Step3: " "+a+b+" " It's String Type (left to right)
" "+3+4+" " o/t: 34,
Step4: foo()+a+b+" " foo() method is String Type
foo+3+4+" " o/t: foo34.
Step5: a+b+foo() a+b is a integer type so addition will be performed (left to right)
o/t: 7foo.
Finally o/t: 72 7 34 foo34 7foo.
Step1: " "+7+2+" " it's String Type not int o/t: 72
Step2: (a+b)=3+4=7 it's int type so addition o/t: 7.
Step3: " "+a+b+" " It's String Type (left to right)
" "+3+4+" " o/t: 34,
Step4: foo()+a+b+" " foo() method is String Type
foo+3+4+" " o/t: foo34.
Step5: a+b+foo() a+b is a integer type so addition will be performed (left to right)
o/t: 7foo.
Finally o/t: 72 7 34 foo34 7foo.
(2)
Anand H.R said:
1 decade ago
Sytem.out.print(foo()+a+b+"");- in this first it will evaluated from left to right so function will return string , if any thing add with string it will be string only so the answer is foo34.
System.out.print(a+b+foo());- in this it will be evalueated from left to right and fist it will add a and b both are int type and intermediat result is 7 so then this 7 append with string foo.
hope now u got...
System.out.print(a+b+foo());- in this it will be evalueated from left to right and fist it will add a and b both are int type and intermediat result is 7 so then this 7 append with string foo.
hope now u got...
Jeng said:
10 years ago
If I am not mistaken it can never be right that (""+a+b+"") is 34.
This should be 7 with whitespaces, 34 should be like this (""+a.toString()+b.toString()+"").
This should be 7 with whitespaces, 34 should be like this (""+a.toString()+b.toString()+"").
Arun kumar said:
1 decade ago
I didn't get why its giving different answers. Any one please explain me.
System.out.print (foo () + a + b + " ") ;
System.out.println (a + b + foo () ) ;
Ans : foo34 7 foo.
System.out.print (foo () + a + b + " ") ;
System.out.println (a + b + foo () ) ;
Ans : foo34 7 foo.
Bittu said:
8 years ago
I am still not clear with,
System.out.print(foo() + a + b + " "); foo34
System.out.println(a + b + foo());7foo
Please, anyone help me.
System.out.print(foo() + a + b + " "); foo34
System.out.println(a + b + foo());7foo
Please, anyone help me.
Santhosh said:
1 decade ago
+7+2 = 72 in step one.
We have used + operator ,rest are a+b is sum.
Next, use two conditions then you get the answer.
We have used + operator ,rest are a+b is sum.
Next, use two conditions then you get the answer.
Anish Kumar said:
1 decade ago
foo() is again a method and it is not initiate. Why we should take as a statement or sentence. foo() is declared?
Keshav Kumar said:
9 years ago
If either operand being evaluated is a String, the + operator will concatenate the two operands. Why?
Post your comments here:
Quick links
Quantitative Aptitude
Verbal (English)
Reasoning
Programming
Interview
Placement Papers