java 問題

1) java.lang.Iterable インタフェースを実装し、FizzBuzzを実装せよ

2) 下記プログラムを実行した際の、三個所の if 文について説明せよ

/**
 * @author aileron
 */
public class EqTest
{
    /**
     * @param args
     */
    public static void main(final String... args)
    {
        final String test1 = test1();
        final String test3 = test3();
        final String test2 = "AAAA";

        System.out.println("test1 : " + test1);
        System.out.println("test2 : " + test2);
        System.out.println("test3 : " + test3);

        if (test1.equals(test2))
        {
            System.out.println("test1 eq test2");
        }

        if (test1 == test2)
        {
            System.out.println("test1 == test2");
        }

        if (test1 == test3)
        {
            System.out.println("test1 == test3");
        }
    }

    /**
     * @return test1
     */
    private static String test1()
    {
        return "AAAA";
    }

    /**
     * @return test3
     */
    private static String test3()
    {
        String test3 = "";
        for (int i = 0; i < 4; i++)
        {
            test3 += "A";
        }
        return test3;
    }
}


3) 下記プログラムの実行結果をしめせ

public class RecTest
{
    /**
     * @param args
     */
    public static void main(final String... args)
    {
        final List<String> list = new ArrayList<String>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        list.add("ddd");
        list.add("eeee");
        final int result = rec(list);
        System.out.println(result);
    }

    /**
     * @param args
     * @return ok
     */
    public static int rec(final List<String> args)
    {
        final String arg = args.get(args.size() - 1);
        System.out.println(arg);

        if (args.size() == 1)
        {
            return 2;
        }
        final List<String> subList = args.subList(0, args.size() - 1);
        final int result = rec(subList);
        return result * 2;
    }
}