Here it gives me the address lcoation where the String Array is stored. why so ? why does it not give values like List ?
It's up to each object how its toString method works - some are more useful than others. But note that arrays are not "real" objects, they're kind of faked by the compiler and the JVM compared to "proper" classes/interfaces like List. The faking stops short of a useful toString method, though.
here the value at index 1 (ie value 2) gets overridden , why so ? Why doesnt the value at index two move back and five be put at index two and all other indexes shifted backwards?
That's how arrays work - an assignment is not an insertion. Plus, arrays are fixed-length, so extra elements can't easily be added; that's what ArrayList is for.