You are on page 1of 46

Abhijit.A.

Nayak KCT,Coimbatore

Sun Certified Programmer for the Java 2


Platform, Standard
Exam 310-055
Edition 5.0

Explanation – Abhijit.A.Nayak – abhijit.a.nayak@gmail.com

Question 1

All constants in an interface are declared public,static,final


Page 22

Question 2

Option A is wrong because the syntax is wrong.


Option C is wrong because only collections can be checked for
hasnext() and next()

Question 3

On line 17,the short circuit operator && evaluates itself to be


false. if((x==4) && !b2) , here once x==4 is evaluated to be
false then other condition is not checked. So option D is right.
Refer page 294

Question 4

Finally surely executes even if there is an exception or not.


Refer page 347

Question 5

When attempting to cast a reference variable to a type that


fails the IS-A test, a ClassCastException is Thrown.
Refer page 370

Question 6

Locale.getDefault(); is the right method to create an instance


of the Locale. Refer Page 471. In option D,

1
Abhijit.A.Nayak KCT,Coimbatore

df.setDateFormat(d) is wrong because the question asked is


about the output not to set the date. Hence Option B is the
right answer.

Question 7

In Encapsulation all instance variables in a class should be


marked as Private. Refer page 83 for the rules.

Question 8

In the line 25,Constructor call to the private variable of the


Money class is wrong. Hence there is a compilation error.Even
though the argument passed to public String
getCountry(String timeZone) ie String timeZone is irrelevant ,
it follows the correct syntax in accessing the instance variable
via a method which has been marked as public.

Question 9

Has a Relationship is based on usage.Refer page 92.


Man has a bestfriend  instance variable or class member of
Man is bestfriend. Bestfriend is a (type of)Dog.

Question 10

Option C is wrong cause in a Hashset no dulicates are


allowed.Second Entry is not allowed inside the set.
Option D Hashset is a Set , not a map.Option B is wrong
because in a map when we delete an object first we check if
the hashcode() is equal then we check the equals() method
to see if both the instances are the same.

Question 11

The format of the question is correct. But in arrays and


collections the elements inside the collection/array must be
mutually comparable. This will be known as an error only
during the runtime, because the complier does not know what
is inside the array until it runs.Refer page 556.

Question 12

This is postfix increment operator inside the dostuff method.


But the variable inside the method is always a local and the
scope of it dies after it leaves the method.hence dostuff=5.

2
Abhijit.A.Nayak KCT,Coimbatore

Once it reaches the main, it realizes that x is a local to the


main() and x was initialized as 5. so main=5. for increment
operator refer page 290.

Question 13

A is correct since we are importing the class in a usual way


and accessing the static
variable using the class name.
C is correct since we are importing the class using the static
imports and accessing the
static variable without class name.
Refer page no 776 for information on static imports

Question 14

To use an enum constant from out side of the class the only
way is to use fully qualified name i.e option D.
Refer page no 60 and 61 for similar examples

Question 15

It is an Argument-Defined Anonymous Inner class.Option D is


the wrong syntax because of class.Option A is wrong because
a new keyword is not there.Option B is wrong because of the
absence of the “()” after foo.
Refer page number 653 for an example.

Question 16

Read the question carefully cause it is tricky & perplex.


Once new Beta.testfoo() is invoked, line number 28
System.out.println( fubar( new A())); is invoked.The
invocation then calls the method fubar on line number 20.In
fubar the foo.bar(); takes the version which was inside the
testfoo() as it was overridden ie on the line 24,25,26(option
B). If these 3 lines were deleted then the call goes to Beta
version s bar() method on line numbers 16,17,18 (Option E).
Similarly for option F.

Question 17

From the Code we know that for like 4 to work properly we a


fully qualified name for sure. So in option E
Import static sun.scjp.Color.GREEN
Tells us that this is the right option.

3
Abhijit.A.Nayak KCT,Coimbatore

Then out of the other options. We first need to import the


package which must contain the enum, so we eliminate A
because there is no static import. Remember static import is
used for accessing static members. So here inside the enum
all 3 colors are static.But we also need to access the color
enum so we must have import sun.scjp.color.*;
Option C is the right answer.

Question 18

This is straight forward and easy. Interface can only extend


another interface. so option A is right

Question 19

Method to be called depends on the actual object type,not on


the return type.

Question 20

It is an simple argument - defined inner anonymous class


.refer page 653 for an example

Question 21

Since we can not create an instance for abstract class options


A and B are invalid.
There is no operator such as -> in java so D is invalid, We
cannot use both object and
class for calling a method so E is invalid.
Option C is the correct way to call the method of Circle by
creating a reference on the abstract class Shape.

Question 22

Rules for overriding


Class members cant have an access modifier which is
narrower than what is declared.But it can be broader.
protected abstract double getSalesAmount();  so proctected
and public are allowed to override but not private and default
as its narrower than what has been declared in Employee
class.

Question 23

4
Abhijit.A.Nayak KCT,Coimbatore

A is the correct answers since the class extending the abstract


class and
Implementing the interface. Ans it also implements the
method.

Question 24

A) one class extends another class but not implements


B) an abstract class can extend another abstract class without
overriding the methods
declared in the base class
C) Since draw(); method is not defined it should be declared
as abstract and the class
should also be declared as abstract
D) It is overriding the method properly but the implements
word cannot be used for
extending the abstract class
E) It is a valid overriding and extending the abstract class
F) implements keyword is wrong it should be extends

Question 25

When we are implementing the Runnable interface we must


override run method and
when implementing the Clonable interface we must override
the clone() method. And we
use the keyword implements for implementing one or more
interfaces only once, so C
and D are valid.
In A we are not giving the implementation for methods so its
invalid.
In B we can not use the key word extends for implementing
interfaces so it is
also not valid.
In E we are using the implements keyword twice its not
required

Question 26

When a.go(); is invoked go in sente is printed.


When b.go(); is invoked go in goban is printed.
So The output so far is

Go in sente
Go in goban

5
Abhijit.A.Nayak KCT,Coimbatore

Only option C is there with this order. Then Go in Goban is


printed.

Question 27

Since f is declared in try block its scope is in try block only it


cannot be accessed from
out side of the try block i.e finally block also. So the compiler
complains that the symbol f
cannot be resolved in line 17.

Question 28

This is too easy. Anyways, when x+=x is invoked then x=x+x


takes place. Hence x =5+5 and x =10

Question 29

This is also too easy. We are creating an array of integers x[]


and adding elements. Now integer array y[] is assigned to x[]
and so y[2] is 3 because all arrays have a zero based index.

Question 30

Identifier can begin only with a letter,an underscore, or a


currency character.
Refer two minute drill first point on page 68.

Question 31

A is a simple way to create an static array (in C style). B is


way which
follows Java rules i.e, declaring, constructing and initializing.

option C looks like an Anonymous array, but its not.the int


should not have a number between the brackets [].
If it was an Anonymous Array it should look like
static final int[] a;
a= new int[]{100,200};

Question 32
This is an example to iterate through the enum elements
using the enhanced for loop. Color.values() is the type which
has to be passed in for the enum Color.

6
Abhijit.A.Nayak KCT,Coimbatore

Question 33

This is an example of a method,constructor inside an enum.


The instance variable is private final int rgb;
The constructor is Color( int rgb) { this.rgb = rgb; }
The method is public int getRGB() { return rgb; }

In order for the enum to work properly we need to make an


enum instance. For that the proper syntax is
Option B  Color treeColor = Color.GREEN;
Option A is wrong because the syntax for the enum which is
enumname.enumvalue
Option C is wrong because we cant add new values to the
enum after its declaration.

Now for the 2nd pick


Option D is wrong because of wrong syntax like option A
enumname.enumvalue
Option E is wrong again because purple cant be added or be
assigned as its invalid.
So option E is right.

Question 34

As soon as line 20 has been invoked,the format uses the


overridden method of the enum Title.
But first the constructor runs and then the format method
runs.

Question 35

It is a straight forward question for the new For Each for loop.
Here Anonymous Array has been used to initialize the object
obj[] array. Somearray takes only integers as obj[] array has
been casted with (int[]) type.

Question 36

A) Since beta is not static it cannot be invoked using class


name, it can be invoked
using reference variable
B) Since alpha is static it can be invoked using the class name
directly

7
Abhijit.A.Nayak KCT,Coimbatore

C) static method (alpha) can be called from non static method


directly in the
same class (beta)
D) non static method (beta) cannot be referenced from the
static method
alpha)
Refer page no 144 and 145 for more information on static
methods.

Question 37

It is a straight forward question for variable arguments.

Question 38

JavaBeans Property Naming rules  refer page 8,9

Question 39

Static Method should access the Static instance variables. So


the code does not compile.
Since the static method getInstanceCount cannot reference
the non static variable
counter the compiler fails to compile in line 6 saying that “A
non static variables cannot
be referenced by static method”. So option A is correct.
Refer page 142,143

Question 40

If the property is Boolean, the getter method’s prefix is either


get or is. Refer page 9.The setter method should be void and
the getter method must consists the Boolean.
Hence option A and C are the right answers.

Question 41

The question here is about legal return types.


Refer page 123.
When option C has been used we know that Two IS-A One. So
it is allowed.(Co variant Return Type).
Option D is overriding the super classes foo() method so it is
allowed as well.

8
Abhijit.A.Nayak KCT,Coimbatore

Question 42

A is invalid since the return type changes. D is invalid since


the modifier can be less
restrictive but it should not be more restrictive, so public and
protected is allowed
but private is not allowed. So B,C and E are correct.

Question 43

When overriding the overridden method can return the same


or sub type but not the
super type. Since in line6 of class C it is returning the super
type the compiler throws an
error.
Refer pages 122, 123 and 124 for information on
covariant return types.

Question 44

Refer page 239 and 240.The complier will always choose to


the older style than the never one to keep the code more
robust.
So option A.

Question 45

The option here is C. If we are overriding then the rules are no


changing the return type and the arguments .But If its
overloading then we have to change the Arguments as well as
the return type.

Question 46

This is inner class question.Refer page 641,642.


But the option B should be like this Line.Point p = new
Line().Point(); Guess there was a typing error.

To instantiate an inner class


MyOuter.MyInner myinner= new MyOuter().MyInner();
Or
If you already have an instance of the outer class then
MyOuter outterObjRef=new MyOuter();
MyOuter.MyInner myinner= MyOuter.new MyInner();

Question 47

9
Abhijit.A.Nayak KCT,Coimbatore

The return type should be Line.Point because that correctly


retrieves a local instance of a Point object.so option A and C
are wrong.we should instantiate line inorder to get a new
instance and from that instance we invoke getpoint() method.
So option D is right.

Question 48

When Three is instantiated. calls the super constructors are


invoked because it in a built in call.So option C.

Question 49

Simple but tricky flow since the subclass invokes the super
class default or no-args constructor but
there is no such constructor in class Person it fails to compile
(it fails to invoke the super
class constructor in line 18). So option D is correct.

Question 50

Since the subclass constructor invokes the base class default


or no-args constructor and there is no such constructor it
throws compilation error so to stop this we need to insert
the statement given in option D. B,C and E are invalid because
since we cannot call constructor using the class name, we can
invoke the constructor using the this() or super() only.

Question 51

Follow the flow to know the out put . Remember that this() is
used to invoke the current class constructors this. is used to
access the current object variables.

Question 52

The answer is Compilation fails since the syntax for default


case is " default" not "case
default".
Refer page no 327 for valid example.

Question 53

Since there is no break statement, after the case collie the


flow of control goes to the next line and produces the output
as collie harrier

10
Abhijit.A.Nayak KCT,Coimbatore

Question 54

The output is really simple,In line 12 , there is a method


invocation to line 18 which returns true.so the output is A.

Question 55

This is a Wrapper class example so its simple and easy. Both


the Wrapper class objects are converted to integers and
added.

Question 56

The format for if is if(---){ } elseif(---){}else{}


So compilation error.

Question 57

There cant be a finally if there is no try/catch.

Question 58

After the first iteration x:1 y:9


After the second iteration x:2 y:8
After the third iteration x:3 y:7
After the fourth iteration x:4 y:6
During the 5th iteration
First y5 x5
Then x value is checked and it exits the loop.

Question 59

The while loop never executes even once.hence the option is


C.

Question 60

This is an infinite loop.as it’s a do while loop, the source code


inside the loop executes once which makes x=9 from then on
it goes on looping.so the option here is D.

Question 61

To sort in reverse order it is not the correct way ,

11
Abhijit.A.Nayak KCT,Coimbatore

to sort in reverse order we first need to apply


reverse method followed by sort method.
Refer page no 624 for correct syntax.

Question 62

LinkedList keeps the elements in the order of the index i.e


with insertion positions so the elements are displayed as in
the insertion order itself. (Don’t confuse with the object
name sorted, it is just a trick but the LinkedList won’t keep
the elements in sorted order)
Note: we can keep the elements in sorted order using TreeSet
and TreeMap
Refer page no 542 and 560 to know abt LinkedList and Lists

Question 63

Since i is declared inside the for loop it can be accessed inside


the for loop only, it is not visible outside the for block so the
compilation will fail in line 15. when accessing i the compiler
says that “cannot resolve symbol i.”

Question 64

To use to assertions first we need to enable assertions , for


this we need to use the –ea or –enableassertions so options A
and C are invalid. If we use C and F the condition will be true
so it wont throw any Error, If we use B and E the assertions
are enabled and the condition will be false (length!=1) so it
throw AssertionError.Option D is the correct syntax it wont
produce and error.Option F enables assertions only for the
test class and two strings test , file1 are passed as command
line argument.

Question 65

This is a simple assertion example. During java AssertStuff


the assert is skipped and the output is passed. During java -ea
AssertStuff since the value of the assertion is false ,
AssertionError is thrown.
Refer page 373.

Question 66

12
Abhijit.A.Nayak KCT,Coimbatore

javac -source 1.3 Test.java makes sure that if assert is an


identifier.Refer pages 375,376,377.
Due to this when we use source 1.3 it complies fine but shows
warnings.anything above java1.3 the compilation fails.

Question 67

Assertions cannot be used to validate the public method


arguments
So line 26 ( assert (x>0)) is not legal because we cant use
assertions to validate arguments of a public method and
assert (dostuff4()) is also not valid because it can cause a
side effect as in it should leave the program as it is. A method
call inside the assert keyword is wrong syntax.Refer page no 380
for usage information of assertions

Question 68

When overriding a method the overriding method cannot


throw any checked exceptions or user defined exceptions(
user defined exceptions are also treated as checked
exceptions) that is not thrown by super class method. So the
compilation in line 2 of class B will fails.
Refer page no 99 for overriding rules.

Question 69

The option is D and E because when a.sayHello(“john”) is


invoked,it throws an exception which either has to be handled
by a try/catchOption E and or has to be declared in the
called method  option D.handle or declare rule.

Question 70

If a null pointer exception takes place then the exception is


caught and then a is printed and the finally block executes.
Hence option D.

Question 71

In line 14 we are overriding the process() method.when we


override exceptions only narrower exceptions can be
declared.In class A’s process() method there is no
exception.hence compilation error on line 14.

13
Abhijit.A.Nayak KCT,Coimbatore

Question 72

This is a Runtime Exception,it is an unchecked exception and


therefore need not be handled or declared unless you wish.
Therefore when ((A)new B()).process(); is called then
super.process(); is called in class A the exception need not be
declared or handled as it is an unchecked exception.In the
If(true) condition an exception is thrown which propagates to
to the process methods which rethrows it to the calling
method where it is handled and hence Exception is printed.
Question 73

Again the compilation error on line 19 because the calling


method should either handle or declare the exception. On line
12, throw new Exception(); is called which has to be handled
or declared in the calling method.

Question 74

Here the option is B because the calling method calls a


method which does not throw any exception in class B the
void process method is overridden without any exception.This
is a valid rule of overriding.Exception can be anything broader
or it simply not exist but is should not be narrower.

Question 75

The connection is made on line 85. On line 86 the exception


occurs which is handled via a catch loop. So the lines after 86,
don’t execute.Which leaves the resource connection open
still.so option C is the right answer.

Question 76
The question is tricky once the a.method1(); is called and then
b.method2(); is called from there and c.method3(); is called
from there.Remember NullPointerException is a Runtime
Exception.So all three methods need not handle/declare it.
c.method3(); propagates to b.method2();a.method1();
which is the calling code and it handles the exception.so
option E is right. The exception is caught by it and the lines
inside the catch executes. So option B is correct too.

Question 77

Don’t be tricked because the exception thrown by the


catch (TestException te) {
throw new RuntimeException(te);

14
Abhijit.A.Nayak KCT,Coimbatore

} is a run time exception it need not be handled or declared


by the calling method.so option b.Remember runtime
exceptions are unchecked exceptions.

Question 78

When handling exception the subclass type catch block should


be first then the super class type should be last. (here
NullPointerException is subclass of Exception class) So
it wont compile, to compile it correctly we need to exchange
the lines 16 and 18
Refer page no 557 for more information.

Question 79

Remember Errors are like unchecked exception. It need not be


declare or handled. Refer page 363.Errors and Exceptions
share a common super class called throwable.here on the line
12. if (true) throw new AssertionError(); an error is thrown to
the calling code which is the main function. So the next line
13 in test() and the exception is not caught in main. Hence
nothing is printed.

Question 80

Exception is caught on line 14. But every time the finally runs
first and then the exception propagates to main and is caught
there.

Question 81

The flow is simple it is a runtime error which is an unchecked


exception. try { test(); } calls test()prints test and throws
new runtime exception which is caught exception is printed
because it is a superclass exception and runtime exceptions
need not be caught so it is handled here only. Thenend is
printed in main as it is already been caught and cause it’s a
runtime exception.

For question 82- please refer page 370 in the K&B text book.

Question 82

15
Abhijit.A.Nayak KCT,Coimbatore

IllegalArgumentException is thrown when a method receives


an argument formatted differently than the method
expects.Hence option D.

Question 83

This is a NullPointerException.Null pointer exception is thrown


when attempting to access an object with a reference variable
whose current value is null. classB.getValue(); is a null value.
Because class B’s getvalue() method has to access class c’s
getvalue() method inorder to get a string.hence it is a runtime
exception.

Question 84

java.lang.ExceptionlnlnitializerErrorThrown when
attempting to initialize a static variable or an initialization
block.

Question 85

StackOverflowError thrown when a method recourses too


deeply. 3 is passed in and the method is a recursive method it
calls itself and hence option A is right cause it count(); keeps
calling itself.

Question 86

Wrapper class Integer i is never initialized to zero


automatically. Hence we get a runtime exception of 0.where
as int x initializes itself to zero after compiling.

Question 87

This is simple.str+=42 means str=str+42;

Question 88

args[0] represents a String bur we are assigning it to Integer


it throws
NumberFormatExceptin when assigning a String to Integer.
The correct way to use is:
Integer i=(Integer)args[0]; or
int i= Integer.parseInt(args[0]);

16
Abhijit.A.Nayak KCT,Coimbatore

Question 89

Option D:Since StringBuffer and StringBuilder methods are


same we can replace with no other changes.
Option A:Since StringBuffer is thread safe A is wrong
Option C:Since + is not overridden in StringBuffer ( and also in
StringBuilder) it is not possible.
Option B:Since StringBuilder methods are not thread safe it
increases the performance

Question 90

If we use string buffer instead of string builder we wont get


complete synchronized data. To get proper sync we should
make the method log synchronized.Option A is correct.

Question 91

Fred this is appended with 47.Fred is also lost because it is


appended with 47.47 is lost
S=Fred47 (1st one,this is also lost)
ed47 (2nd one,this is also lost)
ED47 (final one)

Question 92

Observe the following output sequence for both the outputs


b) “123456789”.delete(0,3) results in “456789” ( observe the
second parameter of delete method is not zero based index, it
is 1 based where as the first param is zerobased) Now
“456789”.replace(1,3,”24”) = “424789” (same as above).
Now“424789”.delete(4,6)= “4247” (here also same thing first
param zero based n second
param 1 based)
e)
123456789”.delete(0,3)=”456789”.replace(1,3,”7”)=”47789”
.delete(2,5)=”47”.insert(1,”24”)=”4247”
Refer 425,426 and 427 for the methods explanation

Question 93

When invoking method the matching is the priority is direct


mapping – widening – autoboxing – varargs.So go(y) invokes
the int method by widening short to int since the direct

17
Abhijit.A.Nayak KCT,Coimbatore

mapping is not available.go(z) invokes the Long version by


auto boxing to Long since the direct mapping and widening is
not available.
Refer page no 238 for widening , auto boxing and varargs
rules.

Question 94

Here the methods go(short s) ans go(Short s) both are same


in the sense of compiler so the compiler fails to compile
saying multiple declarations.

Question 95

This is quiet simple.Unless you carefully look into the question


you might not spot it.The directory object is created but not
the actual directory in the hard disk because
directory.mkdir(); was not called and hence this causes an
IOException during runtime.Refer page 440 for an example.

Question 96

Refer page 436. writing a line separator to the stream is the


only extra thing in buffered writer when compared to
filewriter.

Question 97

As per the Serialization rules the classes that are involving in


serialization also should implement Serializable interface but
here the class Tree is not implementing the Serializable
interface, so it throws an Exception when it is trying to
serialize the Forest class.
Refer page no 450 for similar example.

Question 98

When overriding writeobject() and readobject() we should


make sure than we should read the data in the same order as
we wrote it.
Refer page 451.

Question 99

18
Abhijit.A.Nayak KCT,Coimbatore

For option E refer to page 453.


For option D refer to page 449.

Question 100
Since there is no problem in code and no complex flow, it is a
general flow. So the corresponding values will be printed.
Refer page no 444 for similar example

Question 101

If the super class in not implementing Serializable interface


when deserializing the class the super class constructor will
run.So the execution in object creation is lines 19,14,16 –
output 12.
When serializing no output.
When deserializing the Food constructor will run so output is
1
A the line 22 output is restored and size 42
So the complete output is 121restored42.
Refer page no 452, 453 and 454 for same example

Question 102

Refer page 451.


s.defaultWriteObject(); is used to normalize all the data in a
normal way.

Question 103

This is very easy. Refer pages 469,470.


(3.1415926); is rounded off to 4 decimal points

Question 104

Parse(input) is wrong  parse(“numbers only”) same with


option D
So equals is wrong cause it does not make sense in formatting
problems.
So option B is correct.
Parse() method takes a String formatted in the style of The
DateFormat instance.it coverts the string to date
Refer page 465

Question 105

19
Abhijit.A.Nayak KCT,Coimbatore

This is simple .Refer page 471 and look at the valid instance
creation options.

Question 106

There is not method such like that setLocale. To set the locale
we need to create a
Locale object using the following syntax
Local locItaly=new Local(“it”,”IT”) and format() method is
available in
DateFormat class and it is not available in the Date class.
Refer page no 466,467 and 468

Question 107

getLocalTime() and setLocaltime() are invalid . so option C &


D are wrong . getTime() & setTime() are correct.
Option B is right because the static method used to get an
instance of date format is getDateInstance();
Refer page 461 for date and Refer 471 for DateFormat.

Question 108

Parse() method takes a String formatted in the style of The


DateFormat instance.it coverts the string to date
Refer page 465.Parse() must be placed inside a try/catch
block.Refer page 470.

Question 109

Sorry I don’t know why the compilation fails, here test.split


and tokens.length both are correct but may be problem with
“\s” may be it should be “\\s”.
Refer page no 475 and 486 for some information.

Question 110

split(“\\d” ) splits the string by separating with the a digit.


So the tokens array becomes tokens={“a”,”b”,”c”}
Refer page no.s 475 and 486 for tokenizing the Strings.

Question 111

String regex = “\\.\\s*”; means the regular expression is “.”


Followed by a white space character “s”.

20
Abhijit.A.Nayak KCT,Coimbatore

Question 112

%d is printing integer values but Math.PI returns double so it


throws NumberFormatException.
Refer page no 489, 490 and 491 for information on formatting

Question 113

For retrieving the next integer first we need to test with


hasNextInt and then retrieve using the nextInt. If we are not
checking with the hasNextInt it refers to the string only and
throws parsing exception.
Refer page no.s 477 and 489 for explanation on Scanner class.

Question 114

A separate thread will be created only when we call start


method on a thread object. So in the given options we are
calling the start methods in D and F only.

Question 115

Calling run method wont start a new thread and wont throw
any error or exception, since calling run() is similar to calling
any other method so it is treated as just calling run()
method two times but it doesn’t start the thread.Calling
start() method makes the t.run(); t.run(); run . and then start
calls run();
So the run() method will be executed three times and out put
is “runnungrunningrunning”.
Refer page no 682 for the explanation on run() method.

Question 116

Exception is created because t.start(); is called twice.So a


runtime Exception is created. Refer Page 730 3rd point in the
two minute drill(objective 4.1)

Question 117

It is an example for anonymous inner class and it is following


all the rules for a thread implementation that is creating a

21
Abhijit.A.Nayak KCT,Coimbatore

thread object by passing Runnable reference, overriding the


run() method and invoking the start method on the thread
object. So the output is “bar”.

Question 118

Run() method in the Thread t s anonymous class creation gets


overridden and so Dog is the Right answer.

Question 119

In the main method x which is initialized is not shown


because it is a non static variable.
As soon as new Starter().makeItSo(); is called. First the
constructor is called.
Here x=5;
From here the start(); is made which calls the run();
Here x *= 2;
Hence x=10 inside run
Only now the method makeitso is called after the constructor
and run(from start) method calls are completed.
Here the x is x=x-1
So the answer is 9.

Question 120

Here the target for the thread t is a new instance of the class
thread2 which implements runnable.When t.start(); is invoked
run is printed for sure and Runtime exception is caught and
then End of method is also definitely printed.the order is
decided by the JVM.

Question 121

Since we are declared main as the throws Exception it wont


create any problem it compiles and runs successfully, so the
out put is sleep after minimum of 3000 secs.
If the main is not declared as throws Exception we need a try
catch block since sleep method throws InterruptedException
otherwise the compilation fails.
Refer page no 693 and 694 for more information.

Question 122

The possible results are

22
Abhijit.A.Nayak KCT,Coimbatore

Started0123Completed and 0123StartedCompleted


(Ofcourse other possibilities are
Started123Completed,01StartedCompleted,012StartedComple
ted)
First output: Main thread (the thread which is executing the
current program) executes first and prints Started but bcoz of
join method it waits till thread completes so thread t
will be executed and prints 0123 after t completed it joins
with main thread now main thread continues and prints
Completed.

Second Output: t thread starts and prints 0123 and main


thread prints Started and since Thread t is already completed,
main thread continues and prints Completed.But the
Completed will not be executed until t thread is completed
bcoz of join.

Refer page no 698 and 699 for explanation.

Question 123

Main Thread Thread1 Thread2

First  StartMain is called in the main thread


Thread1 is executed  start1 is printed.
In Thread1 Delay(6000) is executed.
Then first delay(1000) in the main thread is executed.
Then 2nd delay(1000) in the main thread is executed.
Then 3rd delay(1000) in the main thread is executed.
Then EndMain from thread1 is executed
End1 is printed from Thread1.
Then Thread2 is executedstart2 is printed.
In Thread2 Delay(2000) is executed.
Then thread2 is interrupted in main(); t2.interrupt();
So Exception is created in Delay(2000) and caught and Error
is printed.
End2 is printed from Thread2.

This took me one hour to decode properly with lot of


modifications to trace the Thread.This is the way it should be
traced.Hopefully I am right :-) .

Question 124

23
Abhijit.A.Nayak KCT,Coimbatore

The rule for synchronizing threads are keep instance variables


private and method accessing them should be named public
and synchronized keyword should be present.

Question 125

The option is A & C.


Compilers give different output mine gave me 0,0,2,2,4,4,6,6,

What we have to figure out is 0, 2, 4, 4, 6, 8, 10, 6,


In option A . Say one thread executes the loop and prints is
0, 2, 4, and pre-empts and then second thread uses that value
4 which was the latest and prints 4, 6, 8, 10. remember in this
sum what we have to realize is only 8 numbers are printed
and only in the ascending order. Then 6 is printed by the first
thread.

Option B: 0, 2, 4, 6, 8, 10, 12, 14.This is when the x value is


being increment until the loop is completed by thread one 0,
2, 4, 6 and then it continued to increment by 2nd threads loop
8, 10, 12, 14

Question 126

This is a tricky one.Option E is correct Because A,B,C should


run thrice each once.
Don’t know about option G

Question 127

Unless a synchronized on the (This) is not made there wont


be a lock on the current object accessed by the thread.Which
means X can be changed randomly.So Option D is a must.
Option A is a must because if we place the X inside a
synchronized method it will be better to get the lock on the
object.

Question 128

The synchronized keyword can be applied in two ways..i.e for


method and block. When it is applied to method there is no
need to pass object and when it is applied to block we
must pass the object on which object we want to get lock

24
Abhijit.A.Nayak KCT,Coimbatore

A)Incorrect bcoz we cannot apply synchronized keyword for


any variables
B)Incorrect bcoz we are not passing the object for the
synchronized block
D)Incorrect bcoz there is no need to pass object when we are
applying it to method

Question 129

Static variables should be accessed from static methods in


order to be thread safe.option E is right.

Question 130

doTransfer(r1, r2, 5); r1 = 5,r2=15

doTransfer(r2, r1, 2);r1= 7 r2= 13

doTransfer(r1, r2, 1); r1=6,r2=14

These are the 3 options which are the possible outputs but
The code may deadlock (without completing) with no output
is also correcting as “a” can be waiting for “b” and “b” can be
waiting for “a”

Question 131

No syntax errors and exceptions, so follow the code to know


the output

Question 132

Wait and Notify should be applied for locking the object but
not thread.Here we are passing the Thread but not the object .
Correct examples are synchronized( this ) locks on the current
object,synchronized(MyClass.class) locks on the MyClass
object. But in this we are passing the Thread object.
Note: A thread acquires the lock on object.
Refer page nos 707,708,709

Question 133

25
Abhijit.A.Nayak KCT,Coimbatore

wait is applied on bar object so notify or notifyAll should be


invoked on bar object, but there are so many threads so the
better way is to use the notifyAll . So bar.notifyAll() is correct.

Question 134

As the encapsulation rules A & D are correct.


Refer page no.s: 82, 83 and 84 for encapsulation rules.

Question 135

Here the string is public but the class is default . Since the
class has package level access u can access the String only in
the same package.

Question 136

 A is invalid since i++ is different from ++i so it changes


the output.
 B is invalid since i=1; differs with i=0; when initialization
and in output
 C is invalid since if it is private it cannot be accessed in
Client class.
 D is the correct way which uses the autoboxing Integer
i=0;In ++i it is unboxed and incremented.
Refer page no.s 234 and 236 for information.
Question 137

“Base” is having public modifier but the class is having default


modifier, so the class can be accessed only within the package
hence the variable base can be accessed in the same package.

Refer Q. No : 21 for same example

Question 138

 A It is correct because p0=p1, Class B extends Class A.


All that is in Class A can be accessed by Class B.
 BIt is wrong because Class C and Class B extend Class
A.
So there will be methods that are different in Class B &
Class C which cannot be the same.
 CThe Return type of p4 is Class A but Return Type of p2
is Class C. They cannot be assigned together.
 DIt is wrong because p1 cant be cast to the type ClassB
 Ep1 can be assigned to a variable which is cast to
ClassB because both can access only the Class B’s data.

26
Abhijit.A.Nayak KCT,Coimbatore

 FSame as option E.

Question 139

Animal animal = new Dog(); is a dog object which is of the


type Animal.It can only access the Animal Methods,
cat.makenoise(); cant be accessed because it is a dog object
originally.

Question 140

This is a simple but tricky overriding problem, All three are


RaceCar() objects but refer to each of the classes. Hence all
the methods have been overridden successfully.
Refer Page 100,101 for examples

Question 141

z.c1();  Class A does not have c1() method.


y.c1(); technically it is correct. Y instance of class C can
access C’s method.Dont know why it is marked
wrong.probably because the question was different.
All the other Examples are correct because of Simple
overriding rules,Inheritence and Abstract methods,Classes.
void y(); should have been declared in the interface.

Question 143

[lines 24 and 25 are a.x(); a.y() ]


When invoking a method with super class reference variable
the method should be declared in super class otherwise it will
be failed to compiles. ( Even though at run time it invokes the
subclass method).
Since here y method declared in B but it is not declared in
interface A, so the compilers checks for that and the
compilation fails. (If y() is declared in A then at runtime it
invokes the y() method of class B only but at compile time it
checks in A since we are used the reference variable of type
A)
Refer page no 100 (last para) for explanation.

Question 144

Class E overrides bMethod{} even though a return cast type


of Class D is present only the Overridden version of the Class
E is exectuted.

27
Abhijit.A.Nayak KCT,Coimbatore

This is an Example of UpCasting Refer page


114.Dog,Beagle,Pet example on 115.

Question 145

Option A,E it is wrong because Class C does not Implement


the InterfaceA.
Other Options are correct Because Either ClassB or InterfaceA
have declared/implemented the method public int getValue();

Question 146

It is a call from Subclasses constructor to Superclasses


Overriden Construction(Anything which is other than No-
Argument Constructor is Overridden).

Question 147

Based on the “class name” the output:


 Base.FOO = foo (since it is static Base.FOO works)
 Sub.FOO = bar (same as above)
 b.FOO = Base.FOO = foo
 s.FOO = Sub.FOO = bar
 ((Base)s).FOO) = (Base).FOO = foo
 (If the FOO is not static then the last result is bar
since the object is of type Sub).

Question 148

A) final and abstract keywords cannot be applied at a time a


method, since the abstract method must be overridden where
as final not allows to override
B) Since protected method is visible in any subclass of X it can
be overridden in any subclass
c) Static variables can be accessed from static as well as
instance methods there is no such restriction
D) A final method cannot be overridden in any subclass
whether it is static or non static or public
E)Since static variables are class variables we call a static
method without creating an instance for that, just we can call
it using the class name itself
F) Once it is declared as private it is not visible in any of the
subclasses so if we override the method it is not actually
overriding, it is simply just new declaration.

28
Abhijit.A.Nayak KCT,Coimbatore

G)Protected Member can be accessed through inheritance by a


subclass even if the sub class is in a different package.so it is
wrong.only default should be in the same package.

Refer page no 99 for more information on Overriding

Question 149

Are you confused with a long code…don’t worry just observe


the addTopping method in
line 3. It is final so it can be overridden in sub lass i.e in
Pepperon1. So the compilation
fails in line 8.
Refer page no 40 for information on final methods.

Question 150

The variable a is private in class Super so it is not accessible


in class Sub and there is no default constructor in class Super.
So we need to make the changes accordingly and they must
be done independently.Options C and D are correct to change
the code independently (if it is togetherthere are other
options also correct).
Refer questions 28 and 122 for similar example.

Question 151

Since the methods are overridden , the execution of the


method depends on the current
object but not on the reference type and super.method
invokes the super class method.
So the execution of the statements is..
 MultiCalc Line 8
 MultiCalc Line 9
 MultiCalc Line 10
 MultiCalc Line 3 now multiply = 2
 MultiCalc Line 4
 MultiCalc Line 2 now value= 0 - 3 = -3
 MultiCalc Line 5
 SimpleCalc Line 3 value= -3 + 7 = 4
 MultiCalc Line 6 value= 4*2 = 8
 MultiCalc Line 11 Output value is 8

Question 152

29
Abhijit.A.Nayak KCT,Coimbatore

To call or invoke other constructor in the same class we need


to use the this() but not the class name. So the compilation
fails.

Question 153

This() calls the no argument constructor of the same class.


So option a,b is ruled out.
Super() without argument is wrong cause in superclass
constructor has been overridden with an argument.
So option C is wrong.
Option F is wrong because wheelcount is private it is not
inherited.

Question 154

This is a simple question . Super() constructor and assigning


the variable with this operator.

Question 155

Aoverriding
Binvalid overriding
COverloading (long argument)
Dinvalid override return type cant be changed.
EOverloading ( long argument)
FOverloading
GOverloading

Question156

this.a +=5 makes class Bar integer a to be incremented to 13


Foo foo = new Bar(); is an object of type Bar but which refers
to Foo. So in the print statement foo.a returns the Foo’s a
which is 3.

Question 157

super.multiply(a, b); here is wrong. Super(); or


super(arguments) are correct superclass constructor calls .
we cannot call the super classes methods using a constructor
call method super(); so compilation error.

Question 158

30
Abhijit.A.Nayak KCT,Coimbatore

The code with compile because there is no error in the syntax.


It is not a proper design of is-a Relationship cause we are
extending from java.util.Linkedlist we are not overriding and
cannot override any of the linkedlist methods,we are just
using them.add(p);
There no has-a relationship .Refer page number 92.
By default inheritining java.util.Linkedlist also allows us to
remove from the list.

Question 159

Option ahas-a can be encapsulated.


Option b has-a can be implemented using interfaces
Indirectly
Option Factress is not a movie

Question 160

Option CInterfaces can be used , not a must


Option Dinheritance represents extends,implements which is
“is-a” relationship

Question 161

BCat implements Jumper


CDog extends Animal

FTail tail; this is default access so Beagle can access the tail
So Beagle has a tail

GBeagle implements Jumper – is a

Question 162

A treeset is a sorted set by nature. Its output will be in


ascending order.Order or insertion or latest access is not
considered.

Question 163

Poll() retrieves the head element and removes it from the


queue.Peek() retrieves the element at the head of the queue
but doesn’t delete it .

31
Abhijit.A.Nayak KCT,Coimbatore

Question 164

Since ws1 ans ws2 are user defined objects they refer to the
different objects. But after creating s1, s1 will be placed in
String pool, when s2 is created the JVM sees that same
object is existing so s2 also refers to the s1 So s1 and s2 both
are fully equal. As per the HasSet rules only one object will be
taken the duplicate object will not be added. So in
total 3 objects will exist in the list ws1,ws2,s1

Refer page no 562 for more information

Question 165

The set variable contains only three elements from the coil
collection, but the order is NOT guaranteed to be
preserved.set s don’t take in duplicates and the elements
which are added inside are not in the same order.they are
randomly inserted.

Question 166

public int compareTo(Score other) {/*more code here*/} is


correct because Comparable<Score> we should take an
argument of the type you’re sorting.Refer page 552.

Question 167

add(0,object), is used by the list interface method Refer page


569.Random Access is used by Vector and ArrayList types of
list.

So option D is correct.

Question 168

hashCode(), hashCode()/2 and hashCode()/2-age*3 all


return same value for few of the

32
Abhijit.A.Nayak KCT,Coimbatore

elements, but hashCode()+age*7 returns diff values so


options B is correct.
Try with example values for clarifications.
Refer page no 533 for explanation on hashCode legal return
values

Question 169

Hashcode and equals should be overridden.Equals must take


in an argument of type Object.

Question 170

To the hashset during compilation wat matters is there should


not be any duplicates.creating an different objects of type
person and adding it to the set is allowed regardless of
checking if the name is the same or not. The equals method
does NOT properly override the Object.equals method.

Question 171

The equals method does NOT properly override the Object.equals


method. The syntax of equals method is wrong, since equals
takes Object as param but not the
user defined object, so it throws compilation error. The correct
syntax is public Boolean equals(Object o)
Refer page no 526 for more information on equals method

Question 172

Options C and E are correct as per the hashCode implications.


Refer page no 534 and 530 for hashCode implications.

Question 173

Option A is correct since both are always equals since it enum


by default implements
Comparable
Refer page no 60 - 63 to know more about enums

Question 174

Set cant take duplicates, so only one set.add(k1); set.add(k2);


works.
The size of the set now is 2
k2.i = 1;
nothing affects the set cause k2 is not used in the next print
statement

33
Abhijit.A.Nayak KCT,Coimbatore

output is again 2
k1 is removed now k1 which is stored has a value of “i=1” so
it is checked using equals and also hashcode. And successfully
removed
output is one
k2.i=1 makes sure that “k2’s i” is not removed from the set
collection because while equals method and hashcode method
checks it equals return false and hashcode returns “ i=2” for
k2. hence output is one.

Option F is correct.

Question 175

Option AGet(index) is used only by list

Option Biterator is used by list and set.

Option Cit is an method which returns an array containing


the elements of the collection.but the return type is object not
a collection.
Object[] toArray(); (note there are no arguments in
toArray();)

Option D iterator is used by list and set.

Option E it is an method which returns an array containing


the elements of the collection.but the return type is collection.
T[] toArray(T[])

Option Fiterator syntax wrong. Should be only


(Iterator(return type)) iterator();

Question 176

B is not valid since the type is not specified.<?> means we


cant add anything to the collection.it means anytype.refer
page 595.what we are looking for here is of type object.
C is not valid since the method return type is Object but we
are receiving it to String without casting
A is valid since we are passing legacy list to list and return
types are same.
D is valid since Specific type to legacy is allowed and return
types are matching.
E is valid since Specific type to legacy type is allowed and we
are type casting

34
Abhijit.A.Nayak KCT,Coimbatore

the return value.

Refer page no 576 for more information on


mixing generics and legacy code.

Question 177

This is a simple example.inputs 0042 and retrives and prints


it.If you don’t know this please read Colletions again.Make
sure you know
 add() method is used by set,list
 remove() used by all
 put() by map
 get() by list and map
 contains()list,set
 ContainsKey or ContainsValue() Map
 Iterator() Set,List

These are the important interface methods refer to page 569.

Question 178

Since with the generics implementation there is no need of


explicit type conversion from
wrappers to primitives line 14
And to make the code easy
we can remove the complex for loop and can be replaced with
the enhanced version.
List<Integer> intList makes sure only Integer List is created.
options A,C,F are enough to use generics.

Question 179

 Option A it is wrong because any list cant be assigned


to The type List<A>
 Option BList<B> cant be assigned to List<A> cause
<B> might have methods which A doesn’t. it should
always be List<A> a = b; where b = List <B>
 Option CList<Object> and List<?> when equated
means the same.
 Option D Class D extends B so it can be assigned.
 Option EList<A> cant be assigned to anything like
List<? Extends A> because that class which extends A
will have extra methods,variable which Class A wont
have.

35
Abhijit.A.Nayak KCT,Coimbatore

 Option FWrong it should be assigned only to


List<Object>
 Option GList<? extends A> means Class B,C and
List<? extends B> means Class D. so it can be assigned.

Question 180

D is correct because List<? super String> means any type


that is a super class of String or of Type String. So it
accepts objects too.

Question 181

Double forms 123.000 for option D and C .but for option A


and C integer types are only passed in.Option A it is passed in
as a string but it is mutually comparable as the collections
don’t see what has been stored it , it just checks if it follows
the syntax.

Question 182

If we use the "?" place holder it takes any type object but it
not allows to add the objects to the list so the options A,B and
E are wrong (since we are having add method).

If we use C it allows all types of objects so it also not valid.


If we use D it allows only the numeric type objects i.e Integer,
Float, Double, Short ,Long
and Byte (these are all the subclasses of Number class)
If we use the F option it allows the Integer types i.e Integer,
Short Long and Byte.

Refer page no 592, 596 and 610 for more information on ? and
? extends

Question 183

Hint 1 :generic class MinMax so all options are possible


Hint 2:Type parameter of MinMAx
all options are possible because type is E
it should implement Comparable . Comparable is a Class not
an interface that means E extends Comparable<E>
so option B,D is ruled out
From Option A & C

36
Abhijit.A.Nayak KCT,Coimbatore

Put is used to add elements to the collections and the return


type <E> may be normal.but look at the instance variables
<E> E min . That is wrong . it should be of the form E min .
Refer pages 598-602 for making our own generic class.

Question 184

one.name= “Coffee”;
two.name= “Tea”;
these two lines makes sure that when they are added to the
set what happens is compare(object o) return a “zero” with it
and all the objects which are of type Drink are assumed to be
the same so while iterating over the collection we get Coffee
again n again.

Question 185

reverseOrder(); method returns a Comparator that sorts the


reverse of the collections’s current sort sequence.
Its synyax is static Comparator reverseOrder(Comparator)
Refer page 568 for the syntax.
So the sort method takes the syntax which is shown below
Static void sort(List, Comparator);
So option D is correct.

Question 186

Option B is correct because asList(T []) is the correct


syntax.there must be an argument of the list.Refer page 568.

Question 187

Searching an array or collection that is not sorted is a big


gotcha.We can also use the comparator in either the sort or
the search.Refer page 558.

Question 188

The code is correct and when sorting spaces will come first
then caps and then smalls
so the output is C.
Refer page no 556 and 557 for sorting information

Question 189

C is right because Comparator when not used inside


binarySearch() method we get an undefined answer.

37
Abhijit.A.Nayak KCT,Coimbatore

For other rules refer to question above this.

Question 190

Keyset() returns the keeps in a Map.


In order to sort this we use option B because sort method in
option A and C are used only with lists.not with maps.
Option D is wrong because there is nothing called the
Sortedset.
TreeSet() by default is a sorted set. So that is the correct
answer.

Question 191

If ur not importing the package which u want to use for a


method or a class the only way is to use the full name in this
example the full name is
packagename.classname.methodname i.e
Utils.BitUtils.process(bytes); The option E seems to be correct
but in the given question u can not use the import statement
in the middle of the program.
Refer Page no 769

Question 192

private static void process(byte[] b) { } in the BitUtil class so


we cant access the process In the other package.so option F

Question 193

String getText() is got a default access, so it cannot be


inherited to other packages.only protected and public through
inheritance.

Question 194

Only if we make the consume() method public in salomon.java


we can access it is griskly bear.option A is correct

We need not use fully qualified name  look at the code we


are making an instance of the Saloman class so option D is
correct.if we didn’t make an instance we should ve picked
option E

Question 195

38
Abhijit.A.Nayak KCT,Coimbatore

Static import is used here to use Twice method .Twice method


is static and when we use the fully qualified name it can be
accessed easily without typing much code.
Refer static imports in chapter 10.

Question 196

The line in 20 is treated as s= s+ (EASY++ + s);


Since EASY is final it can not be incremented so it fails to
compile.

Question 197

The flow is correct. So option A

Question 198

Args is an array. Arrays have the variable length.but strings


have a method lenth();
So option B is correct

Question 199

The current directory is /foo/ and we ve have used a fully


qualified name henceforth we don’t need a classpath.
Hence option B

Question 200

This question looks very deceptive and correct. Look


carefully.dostuffX is not in main. We get an exception

Exception in thread "main" java.lang.NoSuchMethodError:


main

Thrown if an application tries to call a specified method of a


class (either static or instance), and that class no longer has a
definition of that method.
Normally, this error is caught by the compiler; this error can
only occur at run time if the definition of a class has
incompatibly changed.

Question 201

java Yippee

39
Abhijit.A.Nayak KCT,Coimbatore

no arguments passed nothing is printed.

java Yippee 1234


for(int x = 1; x < args.length; x++)

see this x starts with 1 args[] is zero based. So


234 is correct.

Question 202

Same explanation as the previous one

java Yippee a b c
for(int x = 1; x < args.length; x++)

see this x starts with 1 args[] is zero based


so b , c

Question 203

D,E follow the correct syntax.


See page 764.

Question 204

A is correct because it follows the current syntax.

Question 205

It is a general flow for the program. It seems the modifyDesc


is modifying the desc of it (in lines 6,7,8) but actually it is
creating a new object which is local to that method and
assigning the desc to the item desc. So the output is
GobStopper FizzyLifting.

Question 206

When the object is created the constructor assigns the value


42 to id.But in line 14 using the method we are trying to
modify the value so it throws fails to compile since final
variable cannot be modified. this.id in line 13 and id in line
both refers to the id declared in line 12, (since we are having
one more local variable in the constructor with the same name
we are referred
it using this in line 13).

40
Abhijit.A.Nayak KCT,Coimbatore

Question 207

Substitute the options in the questions and write down the


flow u will get the correct options as B,C,F.

Question 208

The flow is

Foo foo = new Foo( 300);  300

Foo fooFoo = fooBar( foo); 100

foo = fooBar( fooFoo); 100

Question 209

Since intObj is added to the numbers objects, it is in use by


the numbers object till line 18. So it is becomes candidate for
garbage collection in line 19 only ( it is not used by
any thing) ( See the numbers object is declared inside the
method the scope of thatobject is inside that method only so
outside the method it is not accessible, and intObj life is inside
the for loop only but it is in use with numbers object so it is
not eligible for garbage collection there in line 17th or 18th )

Refer page no 248 for similar example

Question 210

This is the direct way to request garbage collector for garbage


collection .For garbage collection we can use System.gc() or
Runtime rt = Runtime.getRuntime(); rt.gc();
Refer page no 251 and 252 for more information

Question 211

On line 22,snooch and booch are created with the help of


snoog.when snoog is referenced to null,the snooch and booch
are useless here after.They are not referenced by snoog and
they left on the heap without any purpose.so they are eligible
for the garbage collection.

Question 212

5. Object o = new Object();

41
Abhijit.A.Nayak KCT,Coimbatore

6. doSomethingElse(o);
Here new object is created and passed to the line 6.
7.o = new Object();
here again new object is created and refered to variable “o”of
type Object .
8. doSomethingElse(null);
Now when null is passed through then the object “o” on line
5 will be refered to null. Not the new object created on line 7.
Hence on line 8,object “o” on line 5 becomes available for
garbage collection.

Question 213

Refer page 253 on finalize() method.


For any given object,finalize() will be called only once
(atmost) by the garbage collector.
Calling finalise() can actually result in saving an object from
deletion.

Question 214

The correct syntax for using jar file with class path is

java/javaC -cp JarName.jar ClassName.java

so from this we get option C & F to be correct.

And inorder to type the command :java games.cards.Poker

SEE THE IMAGE IN THE NEXT PAGE.

Now we have to move the Poker.jar to the stuff/java only


then we can access like

java –cp /stuff/java games.cards.Poker.

This is the correct way to do it.


Option is C.

42
Abhijit.A.Nayak KCT,Coimbatore

Question 215

This question is very easy.just jolt down the path names and
the fully qualified names to classes and draw directories , the
option is jar A.

Question 216

By default the compiler will search for the directory tree


named jre/lib/ext.The jar files hold all the locations to the file
and Book can access paper from the jar file.
So option B is correct.
Option D is correct because it follows the correct command
which includes the classpath environment
variable/foo/myLib.jar.

43
Abhijit.A.Nayak KCT,Coimbatore

Option E is wrong because syntax for using jar file in


classpath is wrong.
Option C is wrong because environment variable is placed
wrongly.
Option A is wrong because the complier does not search there
by default.
Option F is wrong because –d is used which is originally used
for telling the compiler to put the class files in a particular
directory.
Option G is correct because
Jar file is placed in /foo/myLib.jar  this has access to
Paper.java
Classpath environment variable is also /foo/myLib.jar and the
file to be compiled is Book.java.

Question 217

OptionA
It is wrong because

44
Abhijit.A.Nayak KCT,Coimbatore

If we run mainclass from apps/


It cant access the mainclass

Option B is correct because


com.company.application.MainClass can be accessed from
apps

Option C is correct because java -classpath /apps


com.company.application.MainClass if run
from any directory,we are directly accessing the mainclass.

Option D is wrong because it can search for directories inside


application as well if that has a MainClass then there will be
name collision.

Option E is wrong because we are searching from


/apps/com/company/application and t he current directory
which is /apps.

Option F is wrong because


com.company.application.MainClass doesn’t exist from
application directory . check the figure above.

Question 218

The class file chess must be either in the subdirectories of the


test or
Jar file inside test:/home/bob/downloads/*.jar games.Chess

When the classpath environment variable in the command has


been invoked nothing shows up .so it should be in the test folder
somewhere.so test folder is in either option A or option C .

After that even I don’t know the logic sorry.


Question 219

Since str is receiving the value null and we are applying the
length() method on the null object it throw
NullPointerException..

Question 220

In line 13 usage of if condition is wrong (it is correct in


c/c++). In java if condition takes only boolean expression it
may be boolean value or an expression which results in

45
Abhijit.A.Nayak KCT,Coimbatore

Boolean. So the compilation fails.Refer page no 320 321 and


322 for more information

Question 221

I2 is a type Integer(wrapper class). but startingI is an


primitive integer.so the == test fails
Their values are equal because equals classes take only object
inside. So it is true.

Question 222

It refers to a cup but it is an object of poison cup


Cup cup = new PoisonCup(); see this.

Question 223

Simple example for conditional operator. Since


elements.length >0, the Condition becomes true and the
elements[0] is assigned to first.

Question 224

if (value || (setting && title == “Hello”)) is wrong . value is


an integer ,title is a string .

ALL THE BEST !

46

You might also like