Machine-translated by Google. Questions are authored in English.
Top

Discussion

The program is run with java -ea Snippet16 - what will be the output?

public class Snippet16
{
    private static int shrink(int n)
    {
        assert n > 0;
        return n - 1;
    }

    public static void main(String[] args)
    {
        try
        {
            shrink(0);
        }
        catch (AssertionError e)
        {
            System.out.println("message: " + e.getMessage());
        }
    }
}

  • A.The program prints message: 0
  • B.An AssertionError propagates out of main.
  • C.The program prints message:
  • D.The program prints message: null

Answer: D

The one-expression form of assert calls the no-argument AssertionError constructor, which leaves the detail message unset, so getMessage() returns null. Concatenating null into a string produces the four characters null, giving message: null rather than a trailing space. This is why the two-expression form is worth using.

No comment is present. Be the first to comment.
Loading…

Post your comment

Please log in or register to post a comment.