-
What modifiers may be used with
an interface declaration? - An
interface may be declared as public
or abstract.
-
Is a class a subclass of itself?
- A class is a subclass of itself.
-
What is the difference between a
while statement and a do statement?
- A while statement checks at the
beginning of a loop to see whether
the next loop iteration should
occur. A do statement checks at the
end of a loop to see whether the
next iteration of a loop should
occur. The do statement will always
execute the body of a loop at least
once.
-
What modifiers can be used with a
local inner class? - A local
inner class may be final or
abstract.
-
What is the purpose of the File
class? - The File class is used
to create objects that provide
access to the files and directories
of a local file system.
-
Can an exception be rethrown?
- Yes, an exception can be rethrown.
-
When does the compiler supply a
default constructor for a class?
- The compiler supplies a default
constructor for a class if no other
constructors are provided.
-
If a method is declared as
protected, where may the method be
accessed? - A protected method
may only be accessed by classes or
interfaces of the same package or by
subclasses of the class in which it
is declared.
-
Which non-Unicode letter
characters may be used as the first
character of an identifier? -
The non-Unicode letter characters $
and _ may appear as the first
character of an identifier
-
What restrictions are placed on
method overloading? - Two
methods may not have the same name
and argument list but different
return types.
-
What is casting? - There are
two types of casting, casting
between primitive numeric types and
casting between object references.
Casting between numeric types is
used to convert larger values, such
as double values, to smaller values,
such as byte values. Casting between
object references is used to refer
to an object by a compatible class,
interface, or array type reference.
-
What is the return type of a
program’s main() method? - A
program’s main() method has a void
return type.
-
What class of exceptions are
generated by the Java run-time
system? - The Java runtime
system generates RuntimeException
and Error exceptions.
-
What class allows you to read
objects directly from a stream?
- The ObjectInputStream class
supports the reading of objects from
input streams.
-
What is the difference between a
field variable and a local variable?
- A field variable is a variable
that is declared as a member of a
class. A local variable is a
variable that is declared local to a
method.
-
How are this() and super() used
with constructors? - this() is
used to invoke a constructor of the
same class. super() is used to
invoke a superclass constructor.
-
What is the relationship between
a method’s throws clause and the
exceptions that can be thrown during
the method’s execution? - A
method’s throws clause must declare
any checked exceptions that are not
caught within the body of the
method.
-
Why are the methods of the Math
class static? - So they can be
invoked as if they are a
mathematical code library.
-
What are the legal operands of
the instanceof operator? - The
left operand is an object reference
or null value and the right operand
is a class, interface, or array
type.
-
What an I/O filter? - An I/O
filter is an object that reads from
one stream and writes to another,
usually altering the data in some
way as it is passed from one stream
to another.
-
If an object is garbage
collected, can it become reachable
again? - Once an object is
garbage collected, it ceases to
exist. It can no longer become
reachable again.
-
What are E and PI? - E is the
base of the natural logarithm and PI
is mathematical value pi.
-
Are true and false keywords?
- The values true and false are not
keywords.
-
What is the difference between
the File and RandomAccessFile
classes? - The File class
encapsulates the files and
directories of the local file
system. The RandomAccessFile class
provides the methods needed to
directly access data contained in
any part of a file.
-
What happens when you add a
double value to a String? - The
result is a String object.
-
What is your platform’s default
character encoding? - If you are
running Java on English Windows
platforms, it is probably Cp1252. If
you are running Java on English
Solaris platforms, it is most likely
8859_1.
-
Which package is always imported
by default? - The java.lang
package is always imported by
default.
-
What interface must an object
implement before it can be written
to a stream as an object? - An
object must implement the
Serializable or Externalizable
interface before it can be written
to a stream as an object.
-
How can my application get to
know when a HttpSession is removed?
- Define a Class HttpSessionNotifier
which implements
HttpSessionBindingListener and
implement the functionality what you
need in valueUnbound() method.
Create an instance of that class and
put that instance in HttpSession.
-
Whats the difference between
notify() and notifyAll()? -
notify() is used to unblock one
waiting thread; notifyAll() is used
to unblock all of them. Using
notify() is preferable (for
efficiency) when only one blocked
thread can benefit from the change
(for example, when freeing a buffer
back into a pool). notifyAll() is
necessary (for correctness) if
multiple threads should resume (for
example, when releasing a “writer”
lock on a file might permit all
“readers” to resume).
-
Why can’t I say just abs() or
sin() instead of Math.abs() and
Math.sin()? - The import
statement does not bring methods
into your local name space. It lets
you abbreviate class names, but not
get rid of them altogether. That’s
just the way it works, you’ll get
used to it. It’s really a lot safer
this way.
However, there is actually a little
trick you can use in some cases that
gets you what you want. If your
top-level class doesn’t need to
inherit from anything else, make it
inherit from java.lang.Math. That
*does* bring all the methods into
your local name space. But you can’t
use this trick in an applet, because
you have to inherit from
java.awt.Applet. And actually, you
can’t use it on java.lang.Math at
all, because Math is a “final” class
which means it can’t be extended.
-
Why are there no global variables
in Java? - Global variables are
considered bad form for a variety of
reasons: Adding state variables
breaks referential transparency (you
no longer can understand a statement
or expression on its own: you need
to understand it in the context of
the settings of the global
variables), State variables lessen
the cohesion of a program: you need
to know more to understand how
something works. A major point of
Object-Oriented programming is to
break up global state into more
easily understood collections of
local state, When you add one
variable, you limit the use of your
program to one instance. What you
thought was global, someone else
might think of as local: they may
want to run two copies of your
program at once. For these reasons,
Java decided to ban global
variables.
-
What does it mean that a class or
member is final? - A final class
can no longer be subclassed. Mostly
this is done for security reasons
with basic classes like String and
Integer. It also allows the compiler
to make some optimizations, and
makes thread safety a little easier
to achieve. Methods may be declared
final as well. This means they may
not be overridden in a subclass.
Fields can be declared final, too.
However, this has a completely
different meaning. A final field
cannot be changed after it’s
initialized, and it must include an
initializer statement where it’s
declared. For example, public final
double c = 2.998; It’s also possible
to make a static field final to get
the effect of C++’s const statement
or some uses of C’s #define, e.g.
public static final double c =
2.998;
-
What does it mean that a method
or class is abstract? - An
abstract class cannot be
instantiated. Only its subclasses
can be instantiated. You indicate
that a class is abstract with the
abstract keyword like this:
public abstract class Container extends Component {
Abstract classes may contain
abstract methods. A method declared
abstract is not actually implemented
in the current class. It exists only
to be overridden in subclasses. It
has no body. For example,
public abstract float price();
Abstract methods may only be
included in abstract classes.
However, an abstract class is not
required to have any abstract
methods, though most of them do.
Each subclass of an abstract class
must override the abstract methods
of its superclasses or itself be
declared abstract.
-
What is a transient variable?
- transient variable is a variable
that may not be serialized.
-
How are Observer and Observable
used? - Objects that subclass
the Observable class maintain a list
of observers. When an Observable
object is updated it invokes the
update() method of each of its
observers to notify the observers
that it has changed state. The
Observer interface is implemented by
objects that observe Observable
objects.
-
Can a lock be acquired on a
class? - Yes, a lock can be
acquired on a class. This lock is
acquired on the class’s Class
object.
-
What state does a thread enter
when it terminates its processing?
- When a thread terminates its
processing, it enters the dead
state.
-
How does Java handle integer
overflows and underflows? - It
uses those low order bytes of the
result that can fit into the size of
the type allowed by the operation.
-
What is the difference between
the >> and >>> operators? - The
>> operator carries the sign bit
when shifting right. The >>>
zero-fills bits that have been
shifted out.
-
Is sizeof a keyword? - The
sizeof operator is not a keyword.
-
Does garbage collection guarantee
that a program will not run out of
memory? - Garbage collection
does not guarantee that a program
will not run out of memory. It is
possible for programs to use up
memory resources faster than they
are garbage collected. It is also
possible for programs to create
objects that are not subject to
garbage collection
-
Can an object’s finalize() method
be invoked while it is reachable?
- An object’s finalize() method
cannot be invoked by the garbage
collector while the object is still
reachable. However, an object’s
finalize() method may be invoked by
other objects.
-
What value does readLine() return
when it has reached the end of a
file? - The readLine() method
returns null when it has reached the
end of a file.
-
Can a for statement loop
indefinitely? - Yes, a for
statement can loop indefinitely. For
example, consider the following:
for(;;) ;
-
To what value is a variable of
the String type automatically
initialized? - The default value
of an String type is null.
-
What is a task’s priority and how
is it used in scheduling? - A
task’s priority is an integer value
that identifies the relative order
in which it should be executed with
respect to other tasks. The
scheduler attempts to schedule
higher priority tasks before lower
priority tasks.
-
What is the range of the short
type? - The range of the short
type is -(2^15) to 2^15 - 1.
-
What is the purpose of garbage
collection? - The purpose of
garbage collection is to identify
and discard objects that are no
longer needed by a program so that
their resources may be reclaimed and
reused.
-
What do you understand by
private, protected and public? -
These are accessibility modifiers.
Private is the most restrictive,
while public is the least
restrictive. There is no real
difference between protected and the
default type (also known as package
protected) within the context of the
same package, however the protected
keyword allows visibility to a
derived class in a different
package.
-
What is Downcasting ? -
Downcasting is the casting from a
general to a more specific type,
i.e. casting down the hierarchy
-
Can a method be overloaded based
on different return type but same
argument type ? - No, because
the methods can be called without
using their return type in which
case there is ambiquity for the
compiler
-
What happens to a static var that
is defined within a method of a
class ? - Can’t do it. You’ll
get a compilation error
-
How many static init can you have
? - As many as you want, but the
static initializers and class
variable initializers are executed
in textual order and may not refer
to class variables declared in the
class whose declarations appear
textually after the use, even though
these class variables are in scope.
-
What is the difference amongst
JVM Spec, JVM Implementation, JVM
Runtime ? - The JVM spec is the
blueprint for the JVM generated and
owned by Sun. The JVM implementation
is the actual implementation of the
spec by a vendor and the JVM runtime
is the actual running instance of a
JVM implementation
-
Describe what happens when an
object is created in Java? -
Several things happen in a
particular order to ensure the
object is constructed properly:
Memory is allocated from heap to
hold all instance variables and
implementation-specific data of the
object and its superclasses.
Implemenation-specific data includes
pointers to class and method data.
The instance variables of the
objects are initialized to their
default values. The constructor for
the most derived class is invoked.
The first thing a constructor does
is call the consctructor for its
superclasses. This process continues
until the constrcutor for
java.lang.Object is called, as
java.lang.Object is the base class
for all objects in java. Before the
body of the constructor is executed,
all instance variable initializers
and initialization blocks are
executed. Then the body of the
constructor is executed. Thus, the
constructor for the base class
completes first and constructor for
the most derived class completes
last.
-
What does the “final” keyword
mean in front of a variable? A
method? A class? - FINAL for a
variable: value is constant. FINAL
for a method: cannot be overridden.
FINAL for a class: cannot be derived
-
What is the difference between
instanceof and isInstance? -
instanceof is used to check to see
if an object can be cast into a
specified type without throwing a
cast class exception. isInstance()
Determines if the specified Object
is assignment-compatible with the
object represented by this Class.
This method is the dynamic
equivalent of the Java language
instanceof operator. The method
returns true if the specified Object
argument is non-null and can be cast
to the reference type represented by
this Class object without raising a
ClassCastException. It returns false
otherwise.
-
Why does it take so much time to
access an Applet having Swing
Components the first time? -
Because behind every swing component
are many Java objects and resources.
This takes time to create them in
memory. JDK 1.3 from Sun has some
improvements which may lead to
faster execution of Swing
applications.