// ArrayTest: How well do you understand arrays?
//
// Written 2003 by Wayne Pollock, Tampa Florida USA
class ArrayTest
{
public static void main ( String [] args )
{
int [] array = { 'H', 'e', 'l', 'l', 'o' };
byte [] barray = { 'H', 'e', 'l', 'l', 'o' };
char [] carray = { 'H', 'e', 'l', 'l', 'o' };
// Will this work, fail to compile, or throw an Exception?
int [] copy = (int[]) array.clone();
// What is the output?
System.out.println( array );
System.out.println( barray );
System.out.println( carray );
}
}
Although java.lang.System.arraycopy can be used to flexibly
copy arrays, all arrays support the Clonable interface.
So array.clone() works just fine to copy a whole array.
As for the output statements, when any object is printed Java
auto-magically invokes that object's toString method.
Most objects use the inherited Object.toString()
method, which prints out a unique string for each object.
This string contains the class name (which for arrays of primitive
types can look quite strange), an '@' (at-sign), and
a hexidecimal number (the hashcode of the object).
For array and barray, it is this
Object.toString() method that gets used.
However char arrays use a custom toString
method that displays the sequence of characters in the array
as a String.
So the output of this program is something like this (actual hex
numbers may vary from what you see if you run this program):
[I@17182c1 [B@13f5d07 Hello
|
Send comments and questions to
pollock@acm.org. |
|