Vyas,
For the second one, here is the explanation:
Calling equals() method on an array is the same as using the == operator, because arrays always inherit the default equals() method that compares references rather than array contents. So, you get false.
ie. Original Object's equals() method compares references and integer array objects (all primitives, I believe) do not override the equals() method of Object. Whereas,
String class overrides to return true if the contents of two Strings are the same.
Anyone, please correct me if I am wrong.