logo

CuriousTab

CuriousTab

Discussion


Home Java Programming Garbage Collections See What Others Are Saying!
  • Question
  • What allows the programmer to destroy an object x?


  • Options
  • A. x.delete()
  • B. x.finalize()
  • C. Runtime.getRuntime().gc()
  • D. Only the garbage collection system can destroy an object.

  • Correct Answer
  • Only the garbage collection system can destroy an object. 

    Explanation
    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:


    More questions

    • 1. Which two statements are equivalent?

      1. 16*4
      2. 16>>2
      3. 16/2^2
      4. 16>>>2

    • Options
    • A. 1 and 2
    • B. 2 and 4
    • C. 3 and 4
    • D. 1 and 3
    • Discuss
    • 2. What two statements are true about properly overridden hashCode() and equals() methods?

      1. hashCode() doesn't have to be overridden if equals() is.
      2. equals() doesn't have to be overridden if hashCode() is.
      3. hashCode() can always return the same value, regardless of the object that invoked it.
      4. equals() can be true even if it's comparing different objects.

    • Options
    • A. 1 and 2
    • B. 2 and 3
    • C. 3 and 4
    • D. 1 and 3
    • Discuss
    • 3. Which is a valid keyword in java?

    • Options
    • A. interface
    • B. string
    • C. Float
    • D. unsigned
    • Discuss
    • 4. What will be the output of the program?
      int i = 1, j = 10; 
      do 
      {
          if(i++ > --j) /* Line 4 */
          {
              continue; 
          } 
      } while (i < 5); 
      System.out.println("i = " + i + "and j = " + j); /* Line 9 */
      

    • Options
    • A. i = 6 and j = 5
    • B. i = 5 and j = 5
    • C. i = 6 and j = 6
    • D. i = 5 and j = 6
    • Discuss
    • 5. What will be the output of the program?
      int i = 0; 
      while(1) 
      {
          if(i == 4) 
          {
              break;
          } 
          ++i; 
      } 
      System.out.println("i = " + i);
      

    • Options
    • A. i = 0
    • B. i = 3
    • C. i = 4
    • D. Compilation fails.
    • Discuss
    • 6. What will be the output of the program?
      public class Test 
      {
          public int aMethod()
          {
              static int i = 0;
              i++;
              return i;
          }
          public static void main(String args[])
          {
              Test test = new Test();
              test.aMethod();
              int j = test.aMethod();
              System.out.println(j);
          }
      }
      

    • Options
    • A. 0
    • B. 1
    • C. 2
    • D. Compilation fails.
    • Discuss
    • 7. What will be the output of the program?
      int x = l, y = 6; 
      while (y--) 
      {
          x++; 
      } 
      System.out.println("x = " + x +" y = " + y);
      

    • Options
    • A. x = 6 y = 0
    • B. x = 7 y = 0
    • C. x = 6 y = -1
    • D. Compilation fails.
    • Discuss
    • 8. What will be the output of the program?
      class MyThread extends Thread 
      { 
          MyThread() {} 
          MyThread(Runnable r) {super(r); } 
          public void run() 
          { 
              System.out.print("Inside Thread ");
          } 
      } 
      class MyRunnable implements Runnable 
      { 
          public void run() 
          { 
              System.out.print(" Inside Runnable"); 
          } 
      } 
      class Test 
      {  
          public static void main(String[] args) 
          { 
              new MyThread().start(); 
              new MyThread(new MyRunnable()).start(); 
          } 
      }
      

    • Options
    • A. Prints "Inside Thread Inside Thread"
    • B. Prints "Inside Thread Inside Runnable"
    • C. Does not compile
    • D. Throws exception at runtime
    • Discuss
    • 9. Which statement is true?

    • Options
    • A. Assertions can be enabled or disabled on a class-by-class basis.
    • B. Conditional compilation is used to allow tested classes to run at full speed.
    • C. Assertions are appropriate for checking the validity of arguments in a method.
    • D. The programmer can choose to execute a return statement or to throw an exception if an assertion fails.
    • Discuss
    • 10. What will be the output of the program?
      class Two 
      {
          byte x;
      }
      
      class PassO 
      {
          public static void main(String [] args) 
          {
              PassO p = new PassO();
              p.start();
          }
      
          void start() 
          {
              Two t = new Two();
              System.out.print(t.x + " ");
              Two t2 = fix(t);
              System.out.println(t.x + " " + t2.x);
          }
      
          Two fix(Two tt) 
          {
              tt.x = 42;
              return tt;
          }
      }
      

    • Options
    • A. null null 42
    • B. 0 0 42
    • C. 0 42 42
    • D. 0 0 0
    • Discuss


    Comments

    There are no comments.

Enter a new Comment