// -----------
// Arrays.java
// -----------
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
final class ArraysApplication {
public static long f (long... a) {
long s = 0;
for (final long v : a)
s += v;
return s;}
public static long g (long[] a) {
long s = 0;
for (final long v : a)
s += v;
return s;}
public static void main (String[] args) {
System.out.println("Arrays.java");
{
final long[] a = {2, 3, 4};
assert a.length == 3;
assert a[1] == 3;
try {
assert a[3] == 0;
assert false;}
catch (ArrayIndexOutOfBoundsException e)
{}
}
{
final long[] a = new long[]{2, 3, 4};
assert a.length == 3;
assert a[1] == 3;
}
{
final int s = 10;
final long v = 2;
final long[] a = new long[s];
Arrays.fill(a, v);
assert a.length == s;
assert a[1] == v;
}
{
final long[] a = {2, 3, 4};
final long i = 1;
// assert a[i] == 3; // doesn't compile
assert a[(int) i] == 3;
}
{
final long[] a = {2, 3, 4};
final long[] b = a;
++b[1];
assert a[1] == 4;
assert b[1] == 4;
}
{
final long[] a = {2, 3, 4};
final long[] b = (long[]) a.clone();
++b[1];
assert a[1] == 3;
assert b[1] == 4;
}
{
final long[] a = {2, 3, 4};
final long[] b = {2, 3, 4};
assert a != b;
assert !a.equals(b);
assert Arrays.equals(a, b);
}
{
final String[] a = {"abc", "def", "ghi"};
final String[] b = {"abc", "def", "ghi"};
assert a != b;
assert !a.equals(b);
assert Arrays.equals(a, b);
}
{
final String[] a = {new String("abc"), new String("def"), new String("ghi")};
final String[] b = {new String("abc"), new String("def"), new String("ghi")};
assert a != b;
assert !a.equals(b);
assert Arrays.equals(a, b);
}
{
final StringBuilder[] a = {new StringBuilder("abc"), new StringBuilder("def"), new StringBuilder("ghi")};
final StringBuilder[] b = {new StringBuilder("abc"), new StringBuilder("def"), new StringBuilder("ghi")};
assert a != b;
assert !a.equals(b);
assert !Arrays.equals(a, b);
}
{
final long[] a = {2, 3, 4};
System.arraycopy(a, 0, a, 1, 2);
assert Arrays.equals(a, new long[]{2, 2, 3});
}
{
final long[] a = {2, 3, 4};
System.arraycopy(a, 1, a, 0, 2);
assert Arrays.equals(a, new long[]{3, 4, 4});
}
{
final long[] a = {2, 3, 4};
final long v = 5;
Arrays.fill(a, v);
assert a[1] == v;
assert Arrays.equals(a, new long[]{v, v, v});
}
{
final StringBuilder[] a = {new StringBuilder("abc"), new StringBuilder("def"), new StringBuilder("ghi")};
final StringBuilder v = new StringBuilder("xyz");
Arrays.fill(a, v);
assert a[1] == v;
assert Arrays.equals(a, new StringBuilder[]{v, v, v});
}
{
// final long[] a = (long []) new double[3]; // doesn't compile
// final double[] a = (double[]) new long[3]; // doesn't compile
// final String[] a = (String[]) new Object[3]; // ClassCastException
final Object[] a = new String[3];
}
{
final Object[] a = new String[] {"abc", "def", "ghi"};
assert a.length == 3;
assert a[1] == "def";
a[1] = "xyz";
assert a[1] == "xyz";
try {
a[1] = new StringBuilder("uvw");
assert false;}
catch (ArrayStoreException e)
{}
}
{
final Object[] a = new String[] {"abc", "def", "ghi"};
final List<Object> x = Arrays.asList(a);
assert x.size() == 3;
assert x.get(1) == "def";
x.set(1, "xyz");
assert x.get(1) == "xyz";
assert a[1] == "xyz";
try {
x.set(1, new StringBuilder("uvw"));
assert false;}
catch (ArrayStoreException e)
{}
final Object[] b = x.toArray();
assert b.length == 3;
assert b[1] == "xyz";
b[1] = "def";
assert b[1] == "def";
assert x.get(1) == "xyz";
assert a[1] == "xyz";
try {
b[1] = new StringBuilder("uvw");
assert false;}
catch (ArrayStoreException e)
{}
}
{
final List<Integer> x = Arrays.asList(2, 3, 4);
int s = 0;
for (int v : x) {
s += v;
++v;}
assert s == 9;
assert x.get(0) == 2;
assert x.get(1) == 3;
assert x.get(2) == 4;
}
{
final ArrayList<String> x = new ArrayList<String>(10);
// final ArrayList<Object> x = new ArrayList<String>(10); // doesn't compile
final ArrayList<?> y = new ArrayList<String>(10);
x.add("abc");
// y.add("abc"); // doesn't compile
}
{
assert f() == 0;
assert f(2) == 2;
assert f(2, 3) == 5;
assert f(2, 3, 4) == 9;
assert f(2, 3, 4, 5) == 14;
assert f(new long[]{2, 3, 4, 5}) == 14;
}
{
// assert g() == 0; // doesn't compile
// assert g(2) == 2; // doesn't compile
// assert g(2, 3) == 5; // doesn't compile
// assert g(2, 3, 4) == 9; // doesn't compile
// assert g(2, 3, 4, 5) == 14; // doesn't compile
assert g(new long[]{2, 3, 4, 5}) == 14;
}
System.out.println("Done.");}}
syntax highlighted by Code2HTML, v. 0.9.1