• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Garbage Collection

 
deshdeep divakar
Ranch Hand
Posts: 91
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
class I {
private String name;
public String toString() {return name;}
public I(String s) {name = s;}
}
class J {
private static void m1(I[] a1) {a1 = null;}
public static void main (String[] args) {
I[] a1 = new I[3]; // 1
a1[0] = new I("A"); // 2
a1[1] = new I("B"); // 3
a1[2] = new I("C"); // 4
m1(a1);
for (int i = 0; i < a1.length; i++) { //5
System.out.print(a1[i]);
}}}

After method m1 returns, the object created on which line is eligible for garbage collection?

a. 1
b. 2
c. 3
d. 4
e. Compile-time error
f. Run-time error
g. None of the above

This is a question from previous paper.
Q.When the control will return to m1 ,the array a1 will be null so at line 5 there should be a compile time error?
 
Dirk Schreckmann
Sheriff
Posts: 7023
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Moving this to the Beginners forum...
 
Julian Kennedy
Ranch Hand
Posts: 823
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi Deshdeep,

Consider pass by value versus pass by reference. Java is always ... which one? How does that apply here?

Also, even if the object is null, a) the compiler won't know that (it's a runtime condition) and b) it's a valid state. You'll only get an error (NullPointerException at runtime) if you try to access a field or method on a null object.

I hope that helps to clarify.

Jules
 
deshdeep divakar
Ranch Hand
Posts: 91
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanx
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic