MCQs
The names array is initialized with five null elements. Then elements 0 and 1
are assigned the String values "a" and "b" respectively (the command-line
arguments passed to main). Elements of names array 2, 3, and 4 remain
unassigned, so they have a value of null.
In the given program, how many lines of output will be produced?
public class Test
{
public static void main(String [] args)
{
int [] [] [] x = new int [3] [] [];
int i, j;
x[0] = new int[4][];
x[1] = new int[2][];
x[2] = new int[5][];
for (i = 0; i < x.length; i++)
{
for (j = 0; j < x[i].length; j++)
{
x[i][j] = new int [i + j + 1];
System.out.println("size = " + x[i][j].length);
}
}
}
}
The loops use the array sizes (length).
It produces 11 lines of output as given below.
D:Java>javac Test.java
D:Java>java Test
size = 1
size = 2
size = 3
size = 4
size = 2
size = 3
size = 3
size = 4
size = 5
size = 6
size = 7
Therefore, 11 is the answer.
An exception is thrown because at some point in (System.out.print(" " + argh[y]);),
the value of x will be equal to y, resulting in an attempt to access an index out of
bounds for the array. Remember that you can access only as far as length - 1,
so loop logical tests should use x < someArray.length as opposed to x < = some
Array.length.
The word "signed" is not a valid modifier keyword in the Java language. All number
primitives in Java are signed. Hence the Compilation will fails.
The second dimension of the array referenced by theDogs has not been
initialized. Attempting to access an uninitialized object element (System.
out.println(theDogs[2][0].toString());) raises a NullPointerException.
Option D is correct. A runtime error will occur owning to the main method of the
code fragment not being declared static:
Exception in thread "main" java.lang.NoSuchMethodError: main
The Java Language Specification clearly states: "The main method must be
declared public, static, and void. It must accept a single argument that is an
array of strings."
An exception is thrown because in the code String s4 = args[4];, the array index
(the fifth element) is out of bounds. The exception thrown is the cleverly named
ArrayIndexOutOfBoundsException
Option A sets the String reference to null.
Option B is wrong because null cannot be in single quotes.
Option C is wrong because there are multiple characters between the
single quotes ('abc').
Option D is wrong because you can't cast a char (primitive) to a String
(object).
A char is really a 16-bit integer behind the scenes, so it supports 216 (from 0 to 65535) values.
What will be the output of the program?
public class CommandArgsThree
{
public static void main(String [] args)
{
String [][] argCopy = new String[2][2];
int x;
argCopy[0] = args;
x = argCopy[0].length;
for (int y = 0; y < x; y++)
{
System.out.print(" " + argCopy[0][y]);
}
}
}
and the command-line invocation is
> java CommandArgsThree 1 2 3
In argCopy[0] = args;, the reference variable argCopy[0], which was referring to
an array with two elements, is reassigned to an array (args) with three elements.