Finding The Output

Question 1 :

What will be the output of the program?

public class Test 
{ 
    public static void main (String[] args) 
    {
        String foo = args[1]; 
        String bar = args[2]; 
        String baz = args[3]; 
        System.out.println("baz = " + baz); /* Line 8 */
    } 
}
And the command line invocation: > java Test red green blue


A). baz =
B). baz = null
C). baz = blue
D). Runtime Exception
Answer : Option D

Explanation :

When running the program you entered 3 arguments "red", "green" and "blue". When dealing with arrays in java you must remember ALL ARRAYS IN JAVA ARE ZERO BASED therefore args[0] becomes "red", args[1] becomes "green" and args[2] becomes "blue".

When the program entcounters line 8 above at runtime it looks for args[3] which has never been created therefore you get an

ArrayIndexOutOfBoundsException at runtime.


Question 2 :

What will be the output of the program?

public class Test 
{ 
    public static void main (String args[]) 
    {
        String str = NULL; 
        System.out.println(str); 
    } 
}


A). NULL
B). Compile Error
C). Code runs but no output
D). Runtime Exception
Answer : Option B

Explanation :

Option B is correct because to set the value of a String variable to null you must use "null" and not "NULL".


Question 3 :

What will be the output of the program?

package foo; 
import java.util.Vector; /* Line 2 */
private class MyVector extends Vector 
{
    int i = 1; /* Line 5 */
    public MyVector() 
    { 
        i = 2; 
    } 
} 
public class MyNewVector extends MyVector 
{
    public MyNewVector () 
    { 
        i = 4; /* Line 15 */
    } 
    public static void main (String args []) 
    { 
        MyVector v = new MyNewVector(); /* Line 19 */
    } 
}


A). Compilation will succeed.
B). Compilation will fail at line 3.
C). Compilation will fail at line 5.
D). Compilation will fail at line 15.
Answer : Option B

Explanation :

Option B is correct. The compiler complains with the error "modifier private not allowed here". The class is created private and is being used by another class on line 19.


Question 4 :

What will be the output of the program?

public class Test 
{ 
    private static int[] x; 
    public static void main(String[] args) 
    { 
        System.out.println(x[0]); 
    } 
}


A). 0
B). null
C). Compile Error
D). NullPointerException at runtime
Answer : Option D

Explanation :

In the above code the array reference variable x has been declared but it has not been instantiated i.e. the new statement is missing, for example:

private static int[]x = new int[5];

private static int[x] declares a static i.e. class level array.

the "new" keyword is the word that actually creates said array.

int[5] in association with the new sets the size of the array. so since the above code contains no new or size decalarations when you try and access x[0] you are trying to access a member of an array that has been declared but not intialized hence you get a NullPointerException at runtime.


Question 5 :

5. What will be the output of the program?

import java.util.*; 
class I 
{
    public static void main (String[] args) 
    {
        Object i = new ArrayList().iterator(); 
        System.out.print((i instanceof List)+","); 
        System.out.print((i instanceof Iterator)+","); 
        System.out.print(i instanceof ListIterator); 
    } 
}


A). Prints: false, false, false
B). Prints: false, false, true
C). Prints: false, true, false
D). Prints: false, true, true
Answer : Option C

Explanation :

The iterator() method returns an iterator over the elements in the list in proper sequence, it doesn't return a List or a ListIterator object.

A ListIterator can be obtained by invoking the listIterator method.