This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori 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")))