This week's giveaway is in the EJB and other Java EE Technologies forum. We're giving away four copies of EJB 3 in Action and have Debu Panda, Reza Rahman, Ryan Cuprak, and Michael Remijan on-line! See this thread for details.
code: int a = 0; StringBuffer s = new StringBuffer("Hello"); if ((s.length() < 10) | (s.append(" world").equals("Well done"))) ; // do nothing System.out.println("Value is - " + s); in the above code, i thought the result is "Hello",b'cas string buffer doesn't override the equals method, so the result is same as s. but the ans is helloworld, how? anybody correct me? thx in advance
s.length() IS less than 10 -- so that evalutates to true then things get evaluated from left to right for the 2nd half of the equation: s.append(" world") -- so at this point s is "Hello world" s.equals("Well done") -- like you said the .equals method is not overridden in StringBuffer and this half of the equation evalutes to false But... what would happen if the if statement looked like this: if ((s.length() < 10) || (s.append(" world").equals("Well done")))