// ----------------
// StackVsHeap.java
// ----------------
final class StackVsHeapTest {
private static int f (int n) {
if (n == 0)
return 0;
return 1 + f(n - 1);}
public static void main (String[] args) {
System.out.println("StackVsHeap.java");
{
final String x = "abc";
final String y = "abc";
assert x == y;
assert x.equals(y);
}
{
final String x = new String("abc");
final String y = new String("abc");
assert x != y;
assert x.equals(y);
}
{
final String x = "abc";
String y = x;
assert x == y;
y += "defgh";
assert x != y;
assert x.equals("abc");
assert y.equals("abcdefgh");
}
{
final StringBuilder x = new StringBuilder("abc");
final StringBuilder y = new StringBuilder("abc");
assert x != y;
assert !x.equals(y);
assert x.toString().equals(y.toString());
}
{
final StringBuilder x = new StringBuilder("abc");
final StringBuilder y = x;
assert x == y;
y.append("defgh");
assert x == y;
}
try {
final int n = 125000;
assert f(n) == n;}
catch (StackOverflowError e) {
assert false;}
try {
final int n = 135000;
assert f(n) == n;
assert false;}
catch (StackOverflowError e) {
assert e.toString().equals("java.lang.StackOverflowError");}
try {
final int[] a = new int[11500000];}
catch (OutOfMemoryError e) {
assert false;}
try {
final int[] a = new int[12000000];
assert false;}
catch (OutOfMemoryError e) {
assert e.toString().equals("java.lang.OutOfMemoryError: Java heap space");}
System.out.println("Done.");}}
syntax highlighted by Code2HTML, v. 0.9.1