I am trying to understand what happens if I reassign a value to array element which is final, this is the code :
public class XYZ {
private static final
My response is same as the others that "final" only prevents the variable from pointing to a new object, it does not prevent the object itself updates its members.
Additional response about you mention that the output seems to append the string, but it is not, because you have a print statement before the assignment, and one after the assignment.