A: |
A
final class can't be extended ie., final
class may not be subclassed. A final method
can't be overridden when its class is inherited.
You can't change value of a final variable
(is a constant).
Q: |
What
if the main method is declared as private? |
A: |
The program compiles properly but at runtime
it will give "Main method not public."
message. |
|
|
|
Q: |
What
if the static modifier is removed from
the signature of the main method? |
A: |
Program compiles. But at runtime throws
an error "NoSuchMethodError".
|
|
|
|
Q: |
What
if I write static public void instead
of public static void? |
A: |
Program compiles and runs properly. |
|
|
|
Q: |
What
if I do not provide the String array as
the argument to the method? |
A: |
Program compiles but throws a runtime error
"NoSuchMethodError". |
|
|
|
Q: |
What
is the first argument of the String array
in main method? |
A: |
The String array is empty. It does not have
any element. This is unlike C/C++ where
the first element by default is the program
name. |
|
|
|
Q: |
If
I do not provide any arguments on the
command line, then the String array of
Main method will be empty or null? |
A: |
It is empty. But not null. |
|
|
|
Q: |
How
can one prove that the array is not null
but empty using one line of code? |
A: |
Print args.length. It will print 0. That
means it is empty. But if it would have
been null then it would have thrown a NullPointerException
on attempting to print args.length. |
|
|
|
Q: |
What
environment variables do I need to set
on my machine in order to be able to run
Java programs? |
A: |
PATH is the only variable. |
|
|
|
Q: |
Can
an application have multiple classes having
main method? |
A: |
Yes it is possible. While starting the application
we mention the class name to be run. The
JVM will look for the Main method only in
the class whose name you have mentioned.
Hence there is not conflict amongst the
multiple classes having main method. |
|
|
|
Q: |
Can
I have multiple main methods in the same
class? |
A: |
No the program fails to compile. The compiler
says that the main method is already defined
in the class. |
| |
|
Q: |
Do
I need to import java.lang package any
time? Why ? |
A: |
No. It is by default loaded internally by
the JVM. |
|
|
|
Q: |
Can
I import same package/class twice? Will
the JVM load the package twice at runtime? |
A: |
One can import the same package or same
class multiple times. Neither compiler nor
JVM complains abt it. And the JVM will internally
load the class only once no matter how many
times you import the same class. |
|
|
|
Q: |
What
are Checked and UnChecked Exception? |
A: |
A
checked exception is some subclass of Exception
(or Exception itself), excluding class RuntimeException
and its subclasses.
Making an exception checked forces client
programmers to deal with the possibility
that the exception will be thrown. eg, IOException
thrown by java.io.FileInputStream's read()
method·
Unchecked exceptions are RuntimeException
and any of its subclasses. Class Error and
its subclasses also are unchecked. With
an unchecked exception, however, the compiler
doesn't force client programmers either
to catch the
exception or declare it in a throws clause.
In fact, client programmers may not even
know that the exception could be thrown.
eg, StringIndexOutOfBoundsException thrown
by String's charAt() method· Checked
exceptions must be caught at compile time.
Runtime exceptions do not need to be. Errors
often cannot be. |
|
|
Q: |
What
is Overriding? |
A: |
When
a class defines a method using the same
name, return type, and arguments as a method
in its superclass, the method in the class
overrides the method in the superclass.
When the method is invoked for an object
of the class, it is the new definition of
the method that is called, and not the method
definition from superclass. Methods may
be overridden to be more public, not more
private. |
|
|
Q: |
What
are different types of inner classes? |
A: |
Nested
top-level classes, Member classes,
Local classes, Anonymous classes
Nested
top-level classes- If you
declare a class within a class and specify
the static modifier, the compiler treats
the class just like any other top-level
class.
Any class outside the declaring class
accesses the nested class with the declaring
class name acting similarly to a package.
eg, outer.inner. Top-level inner classes
implicitly have access only to static
variables.There can also be inner interfaces.
All of these are of the nested top-level
variety.
Member classes
- Member inner classes are just like other
member methods and member variables and
access to the member class is restricted,
just like methods and variables. This
means a public member class acts similarly
to a nested top-level class. The primary
difference between member classes and
nested top-level classes is that member
classes have access to the specific instance
of the enclosing class.
Local classes
- Local classes are like local variables,
specific to a block of code. Their visibility
is only within the block of their declaration.
In order for the class to be useful beyond
the declaration block, it would need to
implement a
more publicly available interface.Because
local classes are not members, the modifiers
public, protected, private, and static
are not usable.
Anonymous classes
- Anonymous inner classes extend local
inner classes one level further. As anonymous
classes have no name, you cannot provide
a constructor.
Q: |
Are
the imports checked for validity at compile
time? e.g. will the code containing an
import such as java.lang.ABCD compile? |
A: |
Yes the imports are checked for the semantic
validity at compile time. The code containing
above line of import will not compile. It
will throw an error saying,can not resolve
symbol
symbol : class ABCD
location: package io
import java.io.ABCD; |
|
|
|
Q: |
Does
importing a package imports the subpackages
as well? e.g. Does importing com.MyTest.*
also import com.MyTest.UnitTests.*? |
A: |
No you will have to import the subpackages
explicitly. Importing com.MyTest.* will
import classes in the package MyTest only.
It will not import any class in any of it's
subpackage. |
|
|
|
Q: |
What
is the difference between declaring a
variable and defining a variable? |
A: |
In declaration we just mention the type
of the variable and it's name. We do not
initialize it. But defining means declaration
+ initialization.
e.g String s; is just a declaration while
String s = new String ("abcd");
Or String s = "abcd"; are both
definitions. |
|
|
|
Q: |
What
is the default value of an object reference
declared as an instance variable? |
A: |
null unless we define it explicitly. |
|
|
|
Q: |
Can
a top level class be private or protected? |
A: |
No. A top level class can not be private
or protected. It can have either "public"
or no modifier. If it does not have a modifier
it is supposed to have a default access.If
a top level class is declared as private
the compiler will complain that the "modifier
private is not allowed here". This
means that a top level class can not be
private. Same is the case with protected. |
|
|
|
Q: |
What
type of parameter passing does Java support? |
A: |
In Java the arguments are always passed
by value . |
|
|
|
Q: |
Primitive
data types are passed by reference or
pass by value? |
A: |
Primitive data types are passed by value. |
|
|
|
Q: |
Objects
are passed by value or by reference? |
A: |
Java only supports pass by value. With objects,
the object reference itself is passed by
value and so both the original reference
and parameter copy both refer to the same
object . |
|
|
|
Q: |
What
is serialization? |
A: |
Serialization is a mechanism by which you
can save the state of an object by converting
it to a byte stream. |
|
|
|
Q: |
How
do I serialize an object to a file? |
A: |
The class whose instances are to be serialized
should implement an interface Serializable.
Then you pass the instance to the ObjectOutputStream
which is connected to a fileoutputstream.
This will save the object to a file. |
|
|
|
Q: |
Which
methods of Serializable interface should
I implement? |
A: |
The serializable interface is an empty interface,
it does not contain any methods. So we do
not implement any methods. |
|
|
|
Q: |
How
can I customize the seralization process?
i.e. how can one have a control over the
serialization process? |
A: |
Yes it is possible to have control over
serialization process. The class should
implement Externalizable interface. This
interface contains two methods namely readExternal
and writeExternal. You should implement
these methods and write the logic for customizing
the serialization process. |
|
|
|
Q: |
What
is the common usage of serialization? |
A: |
Whenever an object is to be sent over the
network, objects need to be serialized.
Moreover if the state of an object is to
be saved, objects need to be serilazed. |
|
|
|
Q: |
What
is Externalizable interface? |
A: |
Externalizable is an interface which contains
two methods readExternal and writeExternal.
These methods give you a control over the
serialization mechanism. Thus if your class
implements this interface, you can customize
the serialization process by implementing
these methods. |
|
|
|
Q: |
When you serialize an object, what happens to the object references included in the object? |
A: |
The serialization mechanism generates an
object graph for serialization. Thus it
determines whether the included object references
are serializable or not. This is a recursive
process. Thus when an object is serialized,
all the included objects are also serialized
along with the original object. |
|
|
|
Q: |
What
one should take care of while serializing
the object? |
A: |
One should make sure that all the included
objects are also serializable. If any of
the objects is not serializable then it
throws a NotSerializableException. |
|
|
|
Q: |
What
happens to the static fields of a class
during serialization? |
A: |
There are three exceptions in
which serialization doesnot necessarily read and write to the stream.
These are
1. Serialization ignores static fields, because they are not part of ay particular state state.
2. Base class fields are only hendled if the base class itself is serializable.
3. Transient fields. |
|
|
|
|
No comments:
Post a Comment