Page: 3
15. Development
11. Given:
1. // insert code here
2. class StatTest {
3. public static void main(String[] args) {
4. System.out.println(Integer.MAX_VALUE);
5. }
6. }
Which, inserted independently at line 1, compiles? (Choose all that apply.)
A. import static java.lang;
B. import static java.lang.Integer;
C. import static java.lang.Integer.*;
D. import static java.lang.Integer.*_VALUE;
E. import static java.lang.Integer.MAX_VALUE;
F. None of the above statements are valid import syntax.
Answer:
->C and E are correct syntax for static imports. Line 4 isn't making use of static imports, so the code will also compile with none of the imports.
->A, B, D, and F are incorrect based on the above. (Objective 7.1)
12. Given the default classpath:
/foo
And this directory structure:
foo
|
test
|
xcom
|--A.class
|--B.java
And these two files:
package xcom;
public class A { }
package xcom;
public class B extends A { }
Which allows B.java to compile? (Choose all that apply.)
A. Set the current directory to xcom then invoke
javac B.java
B. Set the current directory to xcom then invoke
javac -classpath . B.java
C. Set the current directory to test then invoke
javac -classpath . xcom/B.java
D. Set the current directory to test then invoke
javac -classpath xcom B.java
E. Set the current directory to test then invoke
javac -classpath xcom:. B.java
Answer:
-> C is correct. In order for B.java to compile, the compiler first needs to be able to find B.java. Once it's found B.java it needs to find A.class. Because A.class is in the xcom package the compiler won't find A.class if it's invoked from the xcom directory. Remember that the -classpath isn't looking for B.java, it's looking for whatever classes B.java needs (in this case A.class).
->A, B, and D are incorrect based on the above. E is incorrect because the compiler can't find B.java.
13. Given two files:
package xcom;
public class Stuff {
public static final int MY_CONSTANT = 5;
public static int doStuff(int x) { return (x++)*x; }
}
import xcom.Stuff.*;
import java.lang.System.out;
class User {
public static void main(String[] args) {
new User().go();
}
void go() { out.println(doStuff(MY_CONSTANT)); }
}
What is the result?
A. 25
B. 30
C. 36
D. Compilation fails.
E. An exception is thrown at runtime.
Answer:
-> D is correct. To import static members, an import statement must begin: import static.
->A, B, C, and E are incorrect based on the above. (Objective 7.1)
14. Given three files:
package xcom;
public class A {
// insert code here
}
package xcom;
public class B extends A {public void doB() { System.out.println("B.doB"); } }
import xcom.B;
class TestXcom {
public static void main(String[] args) {
B b = new B(); b.doB(); b.go();
}
}
Which, inserted at // insert code here will allow all three files to compile? (Choose all
that apply.)
A. void go() { System.out.println("a.go"); }
B. public void go() { System.out.println("a.go"); }
C. private void go() { System.out.println("a.go"); }
D. protected void go() { System.out.println("a.go"); }
E. None of these options will allow the code to compile.
Answer:
-> B is correct. The public access modifier is the only one that allows code from outside a package to access methods in a package—regardless of inheritance.
->A, B, D, and E are incorrect based on the above. (Objective 7.1)
15. Given:
class TestProps {
public static void main(String[] args) {
String s = System.getProperty("aaa","bbb");
}
}
And the command-line invocation:
java -Daaa=ccc TestProps
What is always true? (Choose all that apply.)
A. The value of property aaa is aaa.
B. The value of property aaa is bbb.
C. The value of property aaa is ccc.
D. The value of property bbb is aaa.
E. The value of property bbb is ccc.
F. The invocation will not complete without error.
Answer:
-> C is correct. The value of aaa is set at the command line. If aaa had no value when
getProperty was invoked, then aaa would have been set to bbb.
->A, B, D, E, and F are incorrect based on the above.
Page: 3
1
2
3
4