MCQs
finalize() method is called just prior to garbage collection. it is not called when object goes
out of scope.
What is the output of this program?
import java.util.*;
class Collection_Algos {
public static void main(String args[]) {
LinkedList list = new LinkedList();
list.add(new Integer(2));
list.add(new Integer(8));
list.add(new Integer(5));
list.add(new Integer(1));
Iterator i = list.iterator();
Collections.reverse(list);
Collections.sort(list);
while(i.hasNext())
System.out.print(i.next() + " ");
}
}
Collections.sort(list) sorts the given list, the list was 2->8->5->1 after sorting it
firstly elements 3, 2, 5 are entered in the vector obj, but when obj.removeAll(obj);
is executed all the elements are deleted and vector is empty, hence obj.isEmpty()
returns rue.
Output:
$ javac vector.java
$ java vector
true
/* Missing Statement ? */
public class foo
{
public static void main(String[]args)throws Exception
{
java.io.PrintWriter out = new java.io.PrintWriter();
new java.io.OutputStreamWriter(System.out,true);
out.println("Hello");
}
}
What line of code should replace the missing statement to make this program compile?
The usual method for usingimporting the java packages/classes is by using an import
statement at the top of your code. However it is possible to explicitly import the specific
class that you want to use as you use it which is shown in the code above. The disadv-
-antage of this however is that every time you create a new object you will have to use
the class path in the case "java.io" then the class name in the long run leading to a lot
more typing.
push() and pop() are standard functions of the class stack, push() inserts in
the stack and pop removes from the stack. 3 & 2 are inserted using push()
the pop() is used which removes 2 from the stack then again push is used
to insert 5 hence stack contains elements 3 & 5.
Output:
$ javac stack.java
$ java stack
[3, 5]
Option D is correct. When an object is no longer referenced, it may be reclaimed by the garbage
collector. If an object declares a finalizer, the finalizer is executed before the object is reclaimed to
give the object a last chance to clean up resources that would not otherwise be released. When
a class is no longer needed, it may be unloaded.
Option A is wrong. I found 4 delete() methods in all of the Java class structure. They are:
1. delete() - Method in class java.io.File : Deletes the file or directory denoted by this abstract
pathname.
2. delete(int, int) - Method in class java.lang.StringBuffer : Removes the characters in a substring
of this StringBuffer.
3. delete(int, int) - Method in interface javax.accessibility.AccessibleEditableText : Deletes the
text between two indices
4. delete(int, int) - Method in class : javax.swing.text.JTextComponent.AccessibleJTextComponent;
Deletes the text between two indices
None of these destroy the object to which they belong.
Option B is wrong. I found 19 finalize() methods. The most interesting, from this questions point of view, was the finalize() method in class java.lang.Object which is called by the garbage collector on an object when garbage collection determines that there are no more references to the object. This method does not destroy the object to which it belongs.
Option C is wrong. But it is interesting. The Runtime class has many methods, two of which are:
1. getRuntime() - Returns the runtime object associated with the current Java application.
2. gc() - Runs the garbage collector. Calling this method suggests that the Java virtual
machine expend effort toward recycling unused objects in order to make the memory
they currently occupy available for quick reuse. When control returns from the method
call, the virtual machine has made its best effort to recycle all discarded objects. Interesting
as this is, it doesn't destroy the object.
None.
output:
$ javac mainclass.java
$ java mainclass
200
Arrays.sort(array) method sorts the array into 1,2,3,4,5.
Output:
$ javac Array.java
$ java Array
12345
Hashtable is the only class listed that provides synchronized methods. If you need synchronization
great; otherwise, use HashMap, it's faster.
What is the output of this program?
class box {
int width;
int height;
int length;
int volume;
void finalize() {
volume = width*height*length;
System.out.println(volume);
}
protected void volume() {
volume = width*height*length;
System.out.println(volume);
}
}
class Output {
public static void main(String args[])
{
box obj = new box();
obj.volume();
}
}
None.
output:
$ javac Output.java
$ java Output
150