Question about arrays in Java -


can explain why, a.equals(b) false, when initiate b using int[] b = a.clone() true if initiate b using int[] b = a?

 int[] = {1, 2, 3, 4, 5};        int[] b = a;     //int[] b = a.clone();      if(a==b){//true         system.out.println("equal");     }     if(a.equals(b)){//true         system.out.println("equal");      } 

well if use

int[] b = a; 

then b , a refer same object, trivially they're equal. first comparison (==) certainly return false between a , a.clone() values refer different objects. sounds arrays don't override equals (e.g. arraylist does), hence clone not being equal original under equals method either.

edit: indeed, language specification section 10.7, array members:

all members inherited class object; method of object not inherited clone method.

in other words, array overrides clone() not tostring / hashcode / equals.


Comments

Popular posts from this blog

linux - Mailx and Gmail nss config dir -

c# - Is it possible to remove an existing registration from Autofac container builder? -

php - Mysql PK and FK char(36) vs int(10) -