Bird
Raised Fist0
Javaprogramming~10 mins

Object lifetime in Java - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to create a new object of class Car.

Java
Car myCar = new [1]();
Drag options to blanks, or click blank then click option'
AVehicle
Bcar
CCar
DObject
Attempts:
3 left
💡 Hint
Common Mistakes
Using lowercase class name like 'car' instead of 'Car'.
Using a different class name that does not exist.
2fill in blank
medium

Complete the code to call the method that destroys an object reference.

Java
myCar = [1];
Drag options to blanks, or click blank then click option'
Anull
Bvoid
Cremove
Ddelete
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'delete' which is not a Java keyword.
Trying to call a method to destroy the object explicitly.
3fill in blank
hard

Fix the error in the code that tries to finalize an object.

Java
protected void [1]() throws Throwable {
    System.out.println("Cleaning up");
    super.finalize();
}
Drag options to blanks, or click blank then click option'
Afinalize
Bdelete
Ccleanup
Ddestroy
Attempts:
3 left
💡 Hint
Common Mistakes
Using method names like 'destroy' or 'cleanup' which do not override Object's method.
Misspelling 'finalize' as 'finalise'.
4fill in blank
hard

Fill both blanks to create an object and then remove its reference.

Java
Car [1] = new [2]();
Drag options to blanks, or click blank then click option'
AmyCar
Bcar
CCar
DVehicle
Attempts:
3 left
💡 Hint
Common Mistakes
Using lowercase 'car' as a class name.
Using a variable name that is a class name.
5fill in blank
hard

Fill all three blanks to create a new object, assign null, and print a message.

Java
Car [1] = new [2]();
[1] = [3];
System.out.println("Object reference removed");
Drag options to blanks, or click blank then click option'
AmyCar
BCar
Cnull
Dcar
Attempts:
3 left
💡 Hint
Common Mistakes
Using lowercase 'car' as class name.
Assigning a wrong value instead of null.

Practice

(1/5)
1. Which statement best describes the lifetime of an object in Java?
easy
A. An object exists as long as there is at least one reference to it.
B. An object exists only during the execution of the main method.
C. An object is deleted immediately after it is created.
D. An object exists forever once created, regardless of references.

Solution

  1. Step 1: Understand object references in Java

    Objects are created using new and remain in memory while referenced.
  2. Step 2: Recognize garbage collection behavior

    When no references point to an object, Java's garbage collector can remove it.
  3. Final Answer:

    An object exists as long as there is at least one reference to it. -> Option A
  4. Quick Check:

    Object lifetime depends on references [OK]
Hint: Remember: objects live while referenced, else garbage collected [OK]
Common Mistakes:
  • Thinking objects exist only during main method
  • Believing objects are deleted immediately after creation
  • Assuming objects live forever regardless of references
2. Which of the following is the correct way to create a new object in Java?
easy
A. MyClass obj = MyClass();
B. MyClass obj = create MyClass();
C. MyClass obj = new MyClass();
D. MyClass obj = new MyClass;

Solution

  1. Step 1: Recall Java object creation syntax

    Objects are created using the new keyword followed by the constructor call with parentheses.
  2. Step 2: Check each option's syntax

    MyClass obj = new MyClass(); uses correct syntax: new MyClass();. Options A, C, and D are incorrect due to missing new, wrong keywords, or missing parentheses.
  3. Final Answer:

    MyClass obj = new MyClass(); -> Option C
  4. Quick Check:

    Use new ClassName() to create objects [OK]
Hint: Use 'new' keyword plus parentheses to create objects [OK]
Common Mistakes:
  • Omitting the 'new' keyword
  • Forgetting parentheses after class name
  • Using incorrect keywords like 'create'
3. What will be the output of the following code?
class Test {
  public static void main(String[] args) {
    Test obj1 = new Test();
    Test obj2 = obj1;
    obj1 = null;
    if (obj2 != null) {
      System.out.println("Object alive");
    } else {
      System.out.println("Object dead");
    }
  }
}
medium
A. Runtime exception
B. Object dead
C. Compilation error
D. Object alive

Solution

  1. Step 1: Analyze object references

    Initially, obj1 points to the new object. Then obj2 also points to the same object.
  2. Step 2: Check effect of setting obj1 to null

    Setting obj1 to null removes one reference, but obj2 still references the object, so it remains alive.
  3. Final Answer:

    Object alive -> Option D
  4. Quick Check:

    Object lives while any reference exists [OK]
Hint: Object stays alive if any reference points to it [OK]
Common Mistakes:
  • Assuming object is dead after one reference is null
  • Confusing references with object existence
  • Expecting compilation or runtime errors
4. Identify the error in the following code related to object lifetime:
public class Demo {
  public static void main(String[] args) {
    String s = new String("Hello");
    s = null;
    System.out.println(s.length());
  }
}
medium
A. Compilation error due to missing import
B. NullPointerException at runtime
C. No error, prints length of string
D. Syntax error in object creation

Solution

  1. Step 1: Understand object reference and null assignment

    The variable s initially references a String object, then is set to null, removing the reference.
  2. Step 2: Analyze method call on null reference

    Calling s.length() when s is null causes a NullPointerException at runtime.
  3. Final Answer:

    NullPointerException at runtime -> Option B
  4. Quick Check:

    Calling methods on null causes NullPointerException [OK]
Hint: Never call methods on null references [OK]
Common Mistakes:
  • Thinking code compiles but runs fine
  • Expecting compilation errors instead of runtime
  • Ignoring null assignment effect
5. Consider the following code snippet:
class Node {
  Node next;
  int value;
  Node(int v) { value = v; }
}

public class Test {
  public static void main(String[] args) {
    Node a = new Node(1);
    Node b = new Node(2);
    a.next = b;
    b = null;
    // Which objects are eligible for garbage collection here?
  }
}

Which objects are eligible for garbage collection after setting b = null;?
hard
A. No objects are eligible because a still references b through next.
B. Only object b is eligible because b reference is null.
C. Both a and b objects are eligible for garbage collection.
D. Only object a is eligible because b is null.

Solution

  1. Step 1: Analyze references to objects

    Variable a references the first Node object. Its next field references the second Node object originally referenced by b.
  2. Step 2: Understand effect of setting b to null

    Setting b to null removes one reference to the second Node, but a.next still references it, so it is not eligible for garbage collection.
  3. Final Answer:

    No objects are eligible because a still references b through next. -> Option A
  4. Quick Check:

    Objects live while any reference exists [OK]
Hint: Check all references, including fields, before assuming garbage collection [OK]
Common Mistakes:
  • Assuming null variable means object is collectible
  • Ignoring references inside other objects
  • Confusing variable nullification with object lifetime
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard