1. public abstract class Prod {
2. public abstract void prmth1();
3. public static void prmth2() {
4. int mth2 = 30;
5. System.out.println(“prmth2 = ” + mth2);
6. }
7. public abstract void prmth3();
8. }
What is the result?
error on line 1
error on line 3
error on line 7
————————-
1. public class ClassA {
2. public static void main(String [] args) {
3.
4. switch(x) {
5. default:
6. System.out.println(“Here it is.”);
7. }
8. }
9. }
The ClassA class can be compiled successfully by inserting one of three
possible
options on line 3. When inserted separately, which three will allow
compilation
to succeed? (Choose three.)
————————-
1. public class NewGarb {
2. public static Object getIt() {
3. Object rg = new Integer(3);
4. Object dg[][] = new Object[1][2];
5. dg[0][1] = rg;
6. dg[0][0] = rg;
7. rg = null;
8. return rg;
9. }
10. }
Which statement is true?
compile
declared as static
exception is received because dg is not set to null
garbage collection after a call to the getIt() method has returned
————————-
1. public class SetFor {
2.
3. public static void main(String [] args) {
4.
5. System.out.println(“You will need to use ” + c);
6. }
7. }
Which two additions will individually allow compilation to succeed?
(Choose two.)
2
4
2
line 4
————————-
1. public class TeSet {
2. public static void main(String args[]) {
3. int m = 2;
4. int p = 1;
5. int t = 0;
6. for(;p < 5;p++) {
7. if(t++ > m) {
8. m = p + t;
9. }
10. }
11. System.out.println(“t equals ” + t);
12. }
13. }
What is the resulting value of t?
————————-
1. class IntType {
2. public String getType(String a, int b, char c) {
3. String holdit1 = new String();
4. holdit1 = a;
5. return holdit1;
6. }
7. }
8.
9. class OverType extends IntType {
10.
11. String holdit2 = new String();
12. holdit2 = holdit2.concat(“This is “).concat(a);
13. return holdit2;
14. }
15.
16. public static void main(String args[]) {
17. OverType ot = new OverType();
18. String x = new String(“x”);
19. int y = 1;
20. char z = ‘b’;
21. System.out.println(ot.getType(x, y, z));
22. }
23. }
When inserted on line 10, which line will override the getType method,
allowing compilation to succeed and the output “This is x”?
char c) {
char c) {
b, char c) {
a, char c) {
————————-
1. public class MyThread implements Runnable {
2. private String holdA = “This is “;
3. private int[] holdB = {1,2,3,4,5,6,7,8,9,10};
4.
5. public static void main(String args[]) {
6. MyThread z = new MyThread();
7. (new Thread(z)).start();
8. (new Thread(z)).start();
9. }
10.
11. public synchronized void run() {
12. for(int w = 0;w < 10;w++) {
13. System.out.println(holdA + holdB[w] + “.”);
14. }
15. }
16. }
What is the result?
error on line 6
error on line 11
on lines 7 and 8
prints each value in the holdB array at the end of the “This is ” line.
Each value is printed two times before the program ends, and the values
are not printed in sequential order
prints each val in the holdB array at the end of the “This is ” line. Each
val is printed in order from 1-10 & after the val 10 prints, it starts
printing the vals 1-10 in order again
————————-
1. import java.awt.*;
2.
3. public class Birthdays extends Frame {
4. Birthdays() {
5. super(“Birthday Reminder”);
6. String lblsP1[] = {“Name:”, “Birthday:”, “Address:”};
7. String butnsP2[] = {“Add”, “Save”, “Exit”};
8. Panel panelTop = new Panel();
9. Panel panelBot = new Panel();
10. panelTop.setLayout(new GridLayout(3,2,3,3));
11. for(int x = 0; x < lblsP1.length; x++) {
12. panelTop.add(new Label(lblsP1[x]));
13. panelTop.add(new TextField());
14. }
15. for(int y = 0; y < butnsP2.length; y++) {
16. panelBot.add(new Button(butnsP2[y]));
17. }
18. add(panelTop, BorderLayout.NORTH);
19. add(panelBot, BorderLayout.SOUTH);
20. }
21. }
Which main method should you add to the Birthdays class to allow the
program to compile and run with all defined fields properly displayed?
args[]) { Frame.visible = true; }
args[]) { Frame f = new Frame(); f.setVisible(true);}
args[]) { Birthdays b = new Birthdays(); b.pack(); b.setVisible(true);
}
args[]) { Frame f = Birthdays.new Frame(); f.pack(); f.visible = true;
}
————————-
1. public class GetIt {
2. public static void main(String args[]) {
3. double x[] = {10.2, 9.1, 8.7};
4. int i[] = new int[3];
5. for(int a = 0;a < (x.length);a++) {
6.
7. System.out.println(i[a]);
8. }
9. }
10. }
The GetIt class should print the following:
11
10
9
Which line should you insert on line 6 to accomplish this?
((int)Math.ceil(x[a]));
((int)Math.floor(x[a]));
————————-
interface is true?
the values() method
the entrySet() method
a Map using the put() method
a Map using the putAll() method
————————-
1. public class Test1 {
2. public float aMethod(float a, float b) {
3. }
4.
5. }
Which of the following methods would be legal if added (individually) at
line 4?
}
b) { }
b, int c) throws _Exception { }
d) { }
int c) { }
————————-
separate source files:
1. public class Test1 {
2. public float aMethod(float a, float b)
throws IOException {
3. }
4. }
1. public class Test2 extends Test1 {
2.
3. }
Which of the following methods would be legal (individually) at line 2
in class Test2?
}
throws Exception { }
b) throws _Exception { }
q) { }
————————-
document for a veterinary registration system for implementation in Java
technology. It states:
“A pet has an owner, a registration date, and a vaccination-due date.
A cat is a pet that has a flag indicating if it has been neutered, and a
textual description of its markings.”
Given that the Pet class has already been defined, which of the
following fields would be appropriate for inclusion in the Cat class as
members?
————————-
document for a veterinary registration system for implementation in Java.
It states: “A pet has an owner, a registration date, and a vaccination-due
date. A cat is a pet that has a flag indicating if it has been neutered,
and a textual description of its markings.” Given that the Pet class has
already been defined and you expect the Cat class to be used freely
throughout the application, how would you make the opening declaration of
the Cat class, up to but not including the first opening brace? Use only
these words and spaces: boolean, Cat, class, Date, extends, Object, Owner,
Pet, private, protected, public, String.
————————-
declared in separate source files:
1. public class Base {
2. public void method(int i) {
3. System.out.println(“Value is ” + i);
4. }
5. }
1. public class Sub extends Base {
2. public void method(int j) {
3. System.out.println(“This value is ” + j);
4. }
5. public void method(String s) {
6. System.out.println(“I was passed ” + s);
7. }
8. public static void main(String args[]) {
9. Base b1 = new Base();
10. Base b2 = new Sub();
11. b1.method(5);
12. b2.method(6);
13. }
14. }
What output results when the main method of the class Sub is run?
Value is 6
This value is 6
This value is 6
Value is 6
I was passed 6
————————-
definition:
1. public class Test extends Base {
2. public Test(int j) {
3. }
4. public Test(int j, int k) {
5. super(j, k);
6. }
7. }
Which of the following are legitimate calls to construct instances of
the Test class?
Test(1);
————————-
definition:
1. public class Test extends Base {
2. public Test(int j) {
3. }
4. public Test(int j, int k) {
5. super(j, k);
6. }
7. }
Which of the following forms of constructor must exist explicitly in the
definition of the Base class?
————————-
are true?
private
static
should always be anonymous
can access all the method local variables
require an instance of the outer class
————————-
1. public class Outer {
2. public int a = 1;
3. private int b = 2;
4. public void method(final int c) {
5. int d = 3;
6. class Inner {
7. private void iMethod(int e) {
8.
9. }
10. }
11. }
12. }
Which variables may be referenced correctly at line 8?
————————-
are true?
class declared inside a public class Outer, and appropriate constructor
forms are defined, an instance of Inner may be constructed like this: new Outer().new Inner()
the class Outer is defined to implement the interface ActionListener, it
may be constructed like this:
new Outer().new ActionListener()
class declared inside a public class Outer and appropriate constructor
forms are defined, an instance of Inner may be constructed in a static
method like this:
new Inner()
implements the interface MyInterface may be constructed and returned from
a method like this: 1. return new MyInterface(int x) { 2. int x; 3. public
MyInterface(int x) { 4. this.x = x; 5. } 6. };
————————-
class J {
private static int notFinalized;
public static int notFinalized() {return notFinalized;}
private K k;
private int name;
public int name() {return name;}
public J(K k, int i) {this.k = k; name = i; notFinalized++;}
public void finalize() {
synchronized (k) {
System.out.print(name);
notFinalized–;
k.notify();
}
}
}
class K {
private void m1() {
J j = null;
for (int i = 0; i < 5; i++) {
j = new J(this, i); // 1
}
Runtime.getRuntime().gc(); // 2
synchronized (this) {
while (J.notFinalized() > 0) {
try {wait();} catch (InterruptedException ie) {}
}
}
}
public static void main(String[] args) {
new K().m1();
}
}
When the processing of line 2 begins how many objects of type J that
were created at line 1 are eligible for garbage collection?
information
————————-
code when compiled and run? Select two correct answers
1 public class Sample {
2 public static void main(String[] args){
3 int y=0;
4 int x=z=1;
5 System.out.println(y+”,”+x+”,”+z);
6 }
7 }
3
4
5
————————-
code when compiled and run? Select one correct answer
1 public class Sample {
2 public static void main(String[] args){
3 int j = 017;
4 int i = (byte)j >> 2;
5 System.out.println(Integer.toBinaryString(i));
6 }
7 }
4
5
————————-
outlive the last user thread
by invoking System.gc().
non-deamon thread
most once by the JVM for any given object
the object upon which it has been invoked
————————-
code when compiled and run? Select one correct answer.
import java.io.*;
public class TechnoSample {
public static void main(String[] args) {
TechnoSampleSub myref = new TechnoSampleSub();
try{
myref.test();
}catch(IOException ioe){}
}
void test() throws IOException{
System.out.println(“In TechnoSample”);
throw new IOException();
}
}
class TechnoSampleSub extends TechnoSample {
void test() {
System.out.println(“In TechnoSampleSub”);
}
}
In TechnoSampleSub
In TechnoSample
In TechnoSample In TechnoSampleSub
In TechnoSampleSub In TechnoSample
————————-
code when compiled and run with the following command line: java
TechnoSample two three? Select two correct answers.
public class TechnoSample {
public static void main(String[] args) throws Exception {
int i=2;
boolean b = true;
throw new Exception(“Values are:”+(b!=b)+”,”+(i=args.length)+”,”+(b=i==2));
}
}
are:false,3,true
are:true,2,false
are:false,2,true
runtime
————————-
the code given below?
class A{}
class B extends A implements E{} //line 1
class C extends A{}
class D extends B{}
interface E{}
public class Question07 {
public static void main(String[] args) {
A a = new D(); //line 2
C c = new C(); //line 3
E e = (E)a; //line 4
B b = (B)e; //line 5
}
}
runs fine
interface E is not yet declared (forward-referencing)
class A does not implement interface E
mandatory
mandatory
————————-
garbage collection immediately after line 1? Select one correct answer.
public class TechnoGC {
public static void main(String[] args) {
TechnoGC tGC = new TechnoGC();
tGC.doSomething(); //line 1
Thread.sleep(20000);
}
public void doSomething(){
Object[] objArray = new Object[2];
for(int i = 0 ; i < objArray.length ; i++) {
objArray[i] = new Object();
}
}
}
————————-
code when compiled and run? Select one correct answer.
public class TechnoSample {
public static void main(String[] args) {
try {
int i = (int)(Math.random()*10);
if(i<=5)
System.out.println(“i = “+i);
else
throw new Exception(“i > 5″);
} catch (Exception e){
System.err.println(e.getMessage()+” (i=”+i+”)”);
}
}
}
determined
runtime
————————-
code when compiled and run? Select one correct answer.
public class TechnoSample {
public static void main(String[] args) {
new TechnoSample().doSomething();
}
public void doSomething(){
int i=5;
Thread t = new Thread(new Runnable(){
public void run(){
for(int j=0;j<=i;j++){
System.out.print(” “+j);
}
}
});
t.start();
}
}
thrown at runtime
————————-
code when compiled and run? Select one correct answer.
public class TechnoSample {
public static void main(String[] args) {
StringBuffer buf1 = new StringBuffer(“Hello W”);
addSomeStuff(buf1);
System.out.println(buf1.toString());
}
public static void addSomeStuff(StringBuffer buf){
StringBuffer b = buf.replace(6,10,”orld”);
System.out.println(b.delete(0,1).toString());
}
}
Hello World
Hello World
Hello orld Hello orld
Hello orld
ello orld
ello orld ello orld
————————-
code when compiled and run? Select two correct answers. (Note: when an
instance of a Vector is printed, its content appear between square
brackets [])
import java.util.*;
public class TechnoSample {
public static void main(String[] args) {
Vector col = new Vector();
col.add(new Integer(1));
col.add(new Integer(“2”));
col.add(new Float(3.2d)); //line 1
col.add(col.elementAt(1));
col.setElementAt(col.elementAt(2),0);
System.out.println(col);
}
}
fine
————————-
code when compiled and run? (‘\u0048’ is ‘H’ and ‘\u000a’ is a linefeed
(LF)). Select two correct answers.
public class TechnoSample {
public static void main(String[] args) {
String s = “\u0048ello\u000aWorld!”;
System.out.println(s);
}
}
Hello
World!
ignored)
thrown at runtime
be used to create String literals
————————-
code when compiled and run? Select two correct answers.
public class TechnoSample {
public static void main(String[] args) {
int i = 2;
try {
if((i/=(int)Math.floor(Math.random())) > 1)
System.out.println(“No arithmetic exception”);
} catch (ArithmeticException ae){
System.err.println(“Arithmetic exception caught”);
}
}
}
be printed
the code to compile
————————-
code when compiled and run? Select two correct answers.
public class TechnoSample {
public static void main(String[] args) throws Exception{
Thread t1 = new Thread(getRunnable(3));
Thread t2 = new Thread(getRunnable(4));
t1.join();
System.out.println(“End”);
}
public static Runnable getRunnable(final int id){
return new Runnable(){
public void run(){
for(int i = 0; i < id; i++){
System.out.print(” “+i);
}
}
};
}
}
whatever the underlying platform is
0 1 2 End
determined
————————-
code when compiled and run? Select two correct answers.
public class TechnoSample {
public static void main(String[] args){
for(int i = 0; i < 10; i++){
System.out.println(getPrimitive(127)); //line 1
}
}
public static int getPrimitive(byte b){ //line 2
return (short)(Math.random()*b); //line 3
}
}
and 127
————————-
static method
non-static method
a static method
overloaded by a static method
overridden
————————-
about the following code.
public class TechnoSample {
public static void main(String[] args) {
TechnoSample myref = new TechnoSampleSub();
try{
myref.test();
}catch(Exception e){}
}
void test() throws Exception{
System.out.println(“In TechnoSample”);
throw new Exception();
}
}
class TechnoSample Sub extends TechnoSample {
void test() {
System.out.println(“In TechnoSampleSub”);
}
}
myref.test(); is mandatory for the code to compile
TechnoSampleSub has no obligation to declare a throws clause
runtime
————————-
import java.util.Date;
public class Example {
public static void main(String args[]) {
Date d1 = new Date (99, 11, 31);
Date d2 = new Date (99, 11, 31);
method(d1, d2);
System.out.println(“d1 is ” + d1
+ “\nd2 is ” + d2);
}
public static void method(Date d1, Date d2) {
d2.setYear (100);
d1 = d2;
}
}
Which one or more of the following correctly describe the behavior when
this program is compiled and run?
output is:
d1 is Fri December 31 00:00:00 GMT 1999 d2 is Fri December 31 00:00:00 GMT 1999
output is:d1 is Fri December 31 00:00:00 GMT 1999 d2 is Sun December 31 00:00:00 GMT 2000
output is:
d1 is Sun December 31 00:00:00 GMT 2000 d2 is Sun December 31 00:00:00 GMT 2000
by the compiler because the Date class cannot overload the operator
‘=’
is ” + d2) is rejected by the compiler because the Date class cannot
overload the operator ‘+’
————————-
if("String".toString() == "String") System.out.println("Equal"); else System.out.println("Not Equal");
“Equal”
Equal”
error
————————-
class Base{
static int oak=99;
}
public class Doverdale extends Base {
public static void main(String argv[]) {
Doverdale d = new Doverdale();
d.amethod();
}
public void amethod() {
//Here
}
}
Which of the following if placed after the comment //Here, will compile
and modify the value of the variable oak?
————————-
compile and run the following code?
public class TechnoSample {
public static void main(String argv[]) {
TechnoSample inc = new TechnoSample();
int i =0;
inc.fermin(i);
i = i++;
System.out.println(i);
}
void fermin(int i) {
i++;
}
}
————————-
public class ZeroPrint {
public static void main(String argv[]) {
int i =0;
//Here
}
}
Which of the following lines if placed after the comment //Here will
print out 0.
————————-
compile and run this code?
private class Base {}
public class Vis {
transient int iVal;
public static void main(String elephant[]) {
}
}
private
an integer cannot be transient
data type
method
————————-
of an application with the following code?
import java.awt.*;
public class FlowAp extends Frame {
public static void main(String argv[]) {
FlowAp fa=new FlowAp();
fa.setSize(400,300);
fa.setVisible(true);
}
FlowAp() {
add(new Button(“One”));
add(new Button(“Two”));
add(new Button(“Three”));
add(new Button(“Four”));
}//End of constructor
}//End of Application
Four placed on each edge
four running from the top to bottom
Four in the Centre
have not set a LayoutManager
————————-
compile and run the following code?
public class Bground extends Thread {
public static void main(String argv[]) {
Bground b = new Bground();
b.run();
}
public void start() {
for (int i = 0; i <10; i++) {
System.out.println(“Value of i = ” + i);
}
}
}
no run method is defined for the Thread class
run method is defined for the Thread class
values 0 to 9 are printed out
runtime
————————-
int Output = 10;
boolean b1 = false;
if((b1 == true) && ((Output += 10) == 20))
{
System.out.println(“We are equal ” + Output);
}
else
{
System.out.println(“Not equal! ” + Output);
}
perform binary comparison on logical data type
equal 10”
equal! 20”
equal! 10”
————————-
be the output?
class Value
{
public int i = 15;
} //Value
public class Test
{
public static void main(String argv[])
{
Test t = new Test();
t.first();
}
public void first()
{
int i = 5;
Value v = new Value();
v.i = 25;
second(v, i);
System.out.println(v.i);
}
public void second(Value v, int i)
{
i = 0;
v.i = 20;
Value val = new Value();
v = val;
System.out.println(v.i + ” ” + i);
}
} // Test
20
15 0 15
20 0 20
0 15 20
————————-
other changes, which access modifiers (public, protected or private) can
legally be placed before myMethod() on line 3? If line 3 is left as it is,
which keywords can legally be placed before myMethod on line 8?
1. class HumptyDumpty
2. {
3. void myMethod() {}
4. }
5.
6. class HankyPanky extends HumptyDumpty
7. {
8. void myMethod() {}
9. }
as it is) on line 3. Nothing (i.e. leaving it as it is) or protected or
public on line 8
private or nothing (i.e. leaving it as it is) on line 8
or protected or public on line 3. private or nothing (i.e. leaving it as
it is) on line 8
————————-
and run the following code?
public class ThrowsDemo
{
static void throwMethod()
{
System.out.println(“Inside throwMethod.”);
throw new IllegalAccessException(“demo”);
}
public static void main(String args[])
{
try
{
throwMethod();
}
catch (IllegalAccessException e)
{
System.out.println(“Caught ” + e);
}
}
} // ThrowsDemo
printed
caught: java.lang.IllegalAccessExcption: demo
————————-
[1] 1
Explanation:
Option 1 is correct because a class must be declared abstract when it contains
one or more abstract methods. Abstract methods are methods without a body.
Options 2, 3, and 4 are incorrect because compilation succeeds.
* * * *
[2] 1,2,3
Explanation:
Options 1, 2, and 3 are correct because a switch statement test requires an
integer expression. If the values in the expression are of type byte, short,
or char, promotion to the integer value will occur.
Options 4 and 5 are incorrect because class references, floating point values,
and long values are not allowed in the expression.
* * * *
[3] 4
Explanation:
Option 4 is correct because no accessible references to the object created at
line 3 exist after the method returns. This is because automatic variables are
used for all the references in this code.Option 1 is incorrect because the
NewGarb class compiles successfully. Option 2 is incorrect because the getIt()
method may or may not be declared static. Option 3 is incorrect because an
exception is not received.
* * * *
[4] 4,5
Explanation:
Option 4 is correct because “char c = ‘f’;” placed on line 4 will create a
local variable, which is a variable declared within a method. These variables
exist only as long as the method exists.
Option 5 is correct because “static char c;” placed on line 2 will create a
class variable, which is a variable declared within the class. These variables
are created and destroyed as the class is created and destroyed.
Option 1 is incorrect because it does not use the static keyword. A variable
that is accessed by a static method must be declared static, or the access
must be made using an instance reference.Likewise, option 3 is not declared
static using the static keyword. Option 2 is incorrect because it does not
initialize the variable. Option 6 is incorrect because char is not a class,
and so cannot be instantiated.
* * * *
[5] 2
Explanation:
Option 2 is correct because t will result in a value of 4. The ++ operator
will increment variables by one. Stepping through the for loop until p < 5,
incrementing the variables, and performing the calculation will result in t
being equal to 4.
* * * *
[6] 3
Explanation:
Option 3 is correct because the method name, argument list, and return type
are the same as the getType method defined in the IntType class. Overriding
methods must be declared with the same name, argument list, and return type as
the overridden method.
Option 1 is incorrect because the return type is not the same as the getType
method in the IntType class. Option 2 is incorrect because both the return
type and argument list are different from the getType method in the IntType
class. Option 4 is incorrect because the argument list is different from the
getType method in the IntType class.
* * * *
[7] 5
Explanation:
Option 5 is correct because the Runnable interface is implemented by declaring
a synchronized run() method. The method is declared as synchronized to signify
that the object lock must be obtained
Options 1, 2, and 3 are incorrect because compilation succeeds. Option 4 is
incorrect, but would be correct if the run() method were not declared as
synchronized
* * * *
[8] 3
Explanation:
Option 3 is correct because it creates the Birthdays class and displays the
Birthdays frame. The frame is displayed by calling the setVisible() method
with an argument of true.
Options 1, 2, and 4 are incorrect because the Birthdays class is not created
and the frame is not displayed.
* * * *
[9] 3
Explanation:
Option 3 is correct because it uses the ceil() method. This method rounds a
value up (to ceiling).
Option 1 is incorrect because the min() method returns the smaller of two
values. Option 2 is incorrect because the max() method returns the larger of
two values. Option 4 is incorrect because the floor() method rounds a value
down.
* * * *
[10] 3
Explanation:
Option 3 is correct because the put() method is used to add a key/value
association to a Map.
Option 1 is incorrect because the values() method returns a Collection of all
values in a Map.Option 2 is incorrect because the entrySet() method returns a
Set of all mappings in a Map. Option 4 is incorrect because the pubAll()
method copies all mappings from one Map to another.
* * * *
[11] 1,3,5
Explanation:
1, 3, and 4 are correct. In each of these answers, the argument list differs
from the original, so the method is an overload.Overloaded methods are
effectively independent, and there are no constraints on the accessibility,
return type, or exceptions that may be thrown.2 would be a legal overriding
method, except that it cannot be defined in the same class as the original
method; rather, it must be declared in a subclass.4 is also an override, since
the types of its arguments are the same: Changing the parameter names is not
sufficient to count as overloading.
* * * *
[12] 2,4
Explanation:
2 and 4 are correct. 1 is illegal because it is less accessible than the
original method; the fact that it throws no exceptions is perfectly
acceptable. 2 is legal because it overloads the method of the parent class,and
as such it is not constrained by any rules governing its return value,
accessibility, or argument list. The exception thrown by 3 is sufficient to
make that method illegal. 4 is legal because the accessibility and return type
are identical,and the method is an override because the types of the arguments
are identical–remember that the names of the arguments are irrelevant.The
absence of an exception list in 4 is not a problem: An overriding method may
legitimately throw fewer exceptions than its original, but it may not throw
more.
* * * *
[13] 5,6
Explanation:
5 and 6 are correct. The Cat class is a subclass of the Pet class, and as such
should extend Pet, rather than containing an instance of Pet. 2 and 3 should
be members of the Pet class and as such are inherited into the Cat class;
therefore, they should not be declared in the Cat class. 4 would declare a
reference to an instance of the Cat class, which is not generally appropriate
inside the Cat class itself(unless, perhaps, you were asked to give the Cat a
member that refers to its mother). Finally, the neutered flag and markings
descriptions, 5 and 6, are the items called for by the specification; these
are correct items
* * * *
[14] public class Cat extends Pet
Explanation:
public class Cat extends Pet
. The class should be public since it is to be used
freely throughout the application. The statement “A cat is a pet” tells us
that the Cat class should subclass Pet. The other words offered are required
for the body of the definitions of either Cat or Pet–for use as member
variables–but are not part of the opening declaration.
* * * *
[15] 3
Explanation:
3 is correct. The first message is produced by the Base class when
b1.method(5) is called and is therefore Value is 5. Despite variable b2 being
declared as being of the Base class, the behavior that results when method()
is invoked upon it is the behavior associated with class of the actual object,
not with the type of the variable. Since the object is of class Sub, not of
class Base, the second message is generated by line 3 of class Sub: This value
is 6.
* * * *
[16] 2,3
Explanation:
2 and 3 are correct. Since the class has explicit constructors defined, the
default constructor is suppressed, so 1 is not possible. 2 and 3 have argument
lists that match the constructors defined at lines 2 and 4 respectively,and so
are correct constructions. 4 has three integer arguments, but there are no
constructors that take three arguments of any kind in the Test class, so 4 is
incorrect.Finally, 5 is a syntax used for construction of inner classes and is
therefore wrong.
* * * *
[17] 1,3
Explanation:
1 and 3 are correct. In the constructor at lines 2 and 3, there is no explicit
call to either this() or super(), which means that the compiler will generate
a call to the zero argument superclass constructor, as in 1. The explicit call
to super() at line 5 requires that the Base class must have a 7.constructor as
in 3. This has two consequences. First, 3 must be one of the required
constructors and therefore one of the answers.Second, the Base class must have
at least that constructor defined explicitly, so the default constructor is
not generated, but must be added explicitly. Therefore the constructor of 1 is
also required and must be a correct answer.At no point in the Test class is
there a call to either a superclass constructor with one or three arguments,
so 2 and 4 need not explicitly exist.
* * * *
[18] 1,2,5
Explanation:
1, 2, and 5 are correct. Inner classes may be defined with any accessibility,
so private is entirely acceptable and 1 is correct. Similarly, the static
modifier is permitted on an inner class, which causes it not to be associated
with any particularinstance of the outer class. This means that 2 is also
correct. Inner classes defined in methods may be anonymous–and indeed often
are–but this is not required, so 3 is wrong. 4 is wrong because it is not
possible for an inner class defined in a method to access the local variables
of the method, except for those variables that are marked as final.
Constructing an instance of a static inner class does not need an instance of
the enclosing object, but all non-static inner classes do require such a
reference, and that reference must be available to the new operation. The
reference to the enclosing object is commonly implied as this, which is why it
is commonly not explicit. These points make 5 true.
* * * *
[19] 1,2,3,5
Explanation:
1, 2, 3, and 5 are correct. Since Inner is not a static inner class, it has a
reference to an enclosing object, and all the variables of that object are
accessible. Therefore 1 and 2 are correct, despite the fact that b is marked
private.Variables in the enclosing method are only accessible if those
variables are marked final, so the method argument c is correct, but the
variable d is not.Finally, the parameter e is of course accessible, since it
is a parameter to the method containing line 8 itself.
* * * *
[20] 1
Explanation:
1 is correct. Construction of a normal inner class requires an instance of the
enclosing class. Often this enclosing instance is provided via the implied
this reference, but an explicit reference may be used in front of the new
operator, as shown in 1.
Hence 2 is illegal–it actually attempts to instantiate the interface
ActionListener as if that interface were itself an inner class inside Outer.
3 is illegal since Inner is a non-static inner class, and so it requires a
reference to anenclosing instance when it is constructed. The form shown
suggests the implied this reference, but since the method is static, there is
no this reference and the construction is illegal.
4 is illegal since it attempts to use argumentsto the constructor of an
anonymous inner class that implements an interface. The clue is in the attempt
to define a constructor at line 3. This would be a constructor for the
interface MyInterface not for the inner class–this is wrong on two counts.
* * * *
[21] 3
Explanation:
Method K.m1 creates five objects of type J. Each instance has a name
represented by an integer between 0 and 4 inclusive. If the garbage collector
does not run then the program will produce no output.If the garbage collector
does run then the output of the program could be a series of integers that are
the names of four of the five objects. As each new object is created its
reference is assigned to the reference variable j.The previously referenced
object then becomes eligible for garbage collection. The last object created,
4, is not available for garbage collection until method m1 runs to
completion.The while loop in the synchronized block will never complete
because J.notFinalized will never return zero. This program is intended to
provide a working example of garbage collecting objects referenced by local
variables.
* * * *
[22] 4,5
Explanation:
Variable z is not declared, thus, z cannot be resolved on lines 2 and 3. In
Java, z cannot be declared that way. In order to get this code to compile, we
have to write either:
int z=1,x=z;
Or
int z=1;
int x=z;
Or
int z=1;
int x=1;
* * * *
[23] 4
Explanation:
First off, 017 is an octal integer literal having the decimal value 15.
Second, the cast to byte only applies to j and not to j >> 2 as a whole.
Thus, j is downcast to byte and then upcast to int again before the
shifting.Briefly, the cast has no effect here. Then, the binary sequence of 15
is 00000000 00000000 00000000 00001111, which, shifted 2 bits to the right,
yields 00000000 00000000 00000000 00000011. Finally, the binary sequence, 11,
is printed. Note that the prefixed 0’s are dismissed.
* * * *
[24] 1,4,5
Explanation:
The garbage collection thread is a deamon thread. The latter die when there
are no more users threads running. The garbage collection cannot be forced.
* * * *
[25] 5
Explanation:
The code does not compile because no IOException is thrown when invoking
myref.test(). Note that myref’s declared and runtime types are
TechnoSampleSuband thus no dynamic lookup will be performed. However, if you
change the declared type to TechnoSample, the code will compile and the
correct answer would be A because method test() isoverridden in
TechnoSampleSub
* * * *
[26] 3,5
Explanation:
Do not mix b!=b and b=!b. In the former, we check if b’s value is different
from b’s value (?!) which is clearly false. In the latter, we assign b’s
opposite value to itself, that is, if b is true, then after b=!b, b ends up
being false.Moreover, be aware that b=i==2 is evaluated as b=(i==2) because
operator = has the lowest precedence. Finally, note that the arguments to the
Exception constructor are evaluatedfrom the left to the right. First, b!=b is
evaluated, then i=args.length (args.length is 2, so i keeps its value), and
finally, b=i==2.
* * * *
[27] 1,4
Explanation:
First, pay attention to the class hierarchy (B and C are sibling classes!!)
Then, there is no such thing as forward-referencing issues when using
interfaces declared later in the compilation unit.On line 4, we are dealing
with an object whose runtime type is D which implements interface E. The cast
is mandatory, though, since the reference type (A) is not assignmentcompatible
with the reference type E. The cast on line 5 is mandatory for the same
reasons.
* * * *
[28] 4
Explanation:
We declare an array of Object of length two. We then initialize each element
to a new Object. We have 2 objects in the array and the array itself (which is
an object, too!), that makes 3.
* * * *
[29] 2
Explanation:
The code does not compile because i (declared in the try block!) is not in
scope when accessed from the catch block.
* * * *
[30] 2
Explanation:
The code does not compile because the anonymous inner class (new
Runnable(){…}) tries to access the non-final local variable i
* * * *
[31] 4
Explanation:
Whenever you perform some operation upon a String object, you will get a new
String object if the operation had some effect on the original String, we say
that a String is immutable and that its sequence of characters cannot be
changed.Here, we are dealing with a StringBuffer which is an implementation of
a mutable String, that is you can modify the character sequence it contains.
Whenever you perform an operation upon a StringBuffer, the same
StringBuffer(whose content has been modified) is returned. The next important
thing to remember is that when a reference to an object is passed as argument
to a method, a copy of the reference is actually passed to the method. In this
case,buf1 is passed to addSomeStuff and replace is invoked upon it. The
changes operated by replace are affecting buf1. We then store the reference to
buf (which references the same object as buf1 into a local StringBuffer called
b.
* * * *
[32] 3,4
Explanation:
This question mainly tests your knowledge of the various wrapper classes’
constructors. The most notorious thing here is that we can actually give a
double as an argument to the Float constructor.
Otherwise, the question tests your ability to understand how Collection
classes work. The effect of add(), elementAt() and setElementAt() is trivial,
just have a look at the API of the Vector class for more information
* * * *
[33] 3,5
Explanation:
This shows you that Unicode characters are processed very early during the
lexical parsing of a Java source file. Here LF, which is a line terminator,
isactually translated to a line terminator and this results in malformed Java
code. For instance, the example given above is actually interpreted as:
String s = “Hello
World”;
You can notice that the first line is unterminated and the compiler lets you
know that.
* * * *
[34] 2,3
Explanation:
An ArithmeticException is always thrown when executing this code because
Math.random() returns a double between 0.00000 and 0.999999 and Math.floor()
just removes the decimal part (the part after the dot).So, the result of the
combination of Math.floor(Math.random()) is always 0.0.The cast to int
guarantees that 0 will be returned, and an integer division by 0 does always
throw an ArithmeticException.
* * * *
[35] 1,2
Explanation:
We wait on Thread t1 to finish before printing End but none of the threads are
started so only End is printed. Moreover, the same output will be printed
whichever the platform is.
* * * *
[36] 1,4
Explanation:
Line 1 does not compile because getPrimitive() takes a byte and we pass it an
int. In a normal assignment (byte b = 127;) this would work because 127 is in
the range for byte values and the compiler implicitely does a norrowing
conversion.But this is not the case in method invocations. A quote from JLS
5.3: “The designers of the Java programming language felt that including these
implicit narrowing conversions would add additional complexity to the
overloaded method matchingresolution process”. This speaks for itself. Line 3
compiles fine because we have to do with a widening primitive conversion form
short to int which is perfectly straightforward.
* * * *
[37] 2,3,4
Explanation:
Overriding is for non-static methods and hiding is for static methods. So the
following statements are the only true statements about hiding and overriding:
- a static method (in a subclass) may hide another
static method (in a superclass) - a static method (in a subclass) cannot hide a
non-static method (in a superclass) - a non-static method (in a subclass) may override
another non-static method (in a superclass) - a non-static method (in a subclass) cannot
override a static method (in a superclass)
* * * *
[38] 1,3,4
Explanation:
myref is an instance of class TechnoSampleSub referenced by a variable of type
TechnoSample. Method test() in class TechnoSample is overridden in class
TechnoSampleSub, thus the one to be invoked is the one declared in class
TechnoSampleSub(Polymorphism!). Moreover, test() has no obligation to declare
a throws clause (see overriding rules!). The try-catch block is mandatory
because myref could as well reference an instanceof class TechnoSample and in
that case the method test() to be invoked would be the one declared in class
TechnoSample which throws an exception.
* * * *
[39] 2
Explanation:
1) is false because we know that the data in d2 was changed. 3) is false
because we know that the data in d1 was not changed. The names d1 and d2 are
used in both main and method to be confusing. They are different and stored on
the stack in different plaAll the interesting stuff that happen in the Example
class is in method. main simply initializes some data and prints the results.
In method, the followning happens:
1.d2 has its year set to 100 (really 2000, as 2.Object d1 is set to be the
same as d2. This is a change of the actual reference, not in the data at d1.
Both of these line are perfectly legal, and do not result in a compilation
error, so d) is false. I will also point out here that e) is String context.
toString() is defined by the Object class and so it is available on all
classes in Java. Most non-trivial classes override toString() to return more
explicit information about themselves.
* * * *
[40] 1
Explanation:
* * * *
[41] 1,2,3
Explanation:
Because the variable oak is declared as static only one copy of it will exist.
Thus it can be changed either through the name of its class or through the
name of any instance of that class.Because it is created as an integer it
canot be assigned a fractional component without a cast.
* * * *
[42] 4
Explanation:
The method fermin only receives a copy of the variable i and any modifications
to it are not reflected in the version in the calling method.The post
increment operator ++ effectivly modifes the value of i after the initial
value has been assiged to the left hand side of the equals operator.
* * * *
[43] 1,3,4
Explanation:
The options for this question might look suspiciously easy if you are not
aware of the effects of the post-increment operators. The ++ and — operations
for examples 1 and 4 only come into effect after the outputoperations, ie
after whatever else is done to them on that line of code. Option 2 should be
fairly obvious as you should know that the single quote characters indicate a
char value, ie storing the character ratherthan the numberical value for 0.
* * * *
[44] 1
Explanation:
A top leve (non nested) class cannot be private.
* * * *
[45] 3
Explanation:
he default layout manager for a Frame is the BorderLayout manager. This Layout
manager defaults to placing components in the centre if no constraint is
passed with the call to the add method.
* * * *
[46] 4
Explanation:
If the for loop were defined in a method called:
public void run()
and the call in the main method had been to
b.start(), the list of values from 0 to 9 would have been output.
* * * *
[47] 4
Explanation:
Note that && is short-circuit logical AND operator. If first operand
(before &&) is false (or evaluated to false) then the other operand
will not be evaluated.This illustrates that the Output +=10 calculation was
never performed because processing stopped after the first operand was
evaluated to be false.If you change the value of b1 to true, processing occurs
as you would expect and the output would be “We are equal 20”.
* * * *
[48] 1
Explanation:
When we pass references in Java what actually gets passed is the value of that
reference (i.e. memory address of the object being referenced and not the
actual object called by that reference) and it gets passed as value (i.e a
copy of thereference is made). Now when we make changes to the object
referenced by that reference it reflects on that object even outside of the
method being called but any changes made to the reference itself is not
reflected on that reference outside ofthe method which is called.
* * * *
[49] 1
Explanation:
The basic principle is that a method cannot be overridden to be more private.
Since the method is being overridden to be friendly (default modifier) it can
only be private or friendly in the superclass.Also, if the method in
superclass is left as it is (i.e. friendly access) the method in subclass can
be friendly, protected or public.
* * * *
[50] 1
Explanation:
Exception :java.lang.IllegalAccessExcption must be caught or placed in the
throws clause of the throwMethod(), i.e. the declaration of throwMethod()
bechanged to “static void throwMethod() throws IllegalAccessExcption”. Thus
compilation error will occur.