Unnecessary array copy in AbstractStringBuilder.indexOf(String)?

Martin Desruisseaux martin.desruisseaux at geomatys.fr
Mon Nov 19 15:46:58 UTC 2012


Hello all

I noticed that AbstractStringBuilder.indexOf(String, int) is implemented 
as below:

     public int indexOf(String str, int fromIndex) {
         return String.indexOf(value, 0, count,
                               str.toCharArray(), 0, str.length(), 
fromIndex);
     }

The call to str.toCharArray() creates a copy of the String.value char[] 
array. This copy doesn't seem necessary since the above 
String.indexOf(...) method doesn't modify the array content. Shouldn't 
AbstractStringBuilder passes directly the reference to the String 
internal array instead, maybe using package-privated access to the array?

Admittedly the cloned array is usually small, but the call to 
indexOf(String, int) is often done in a loop.

     Martin




More information about the core-libs-dev mailing list