Sign in to follow this  
X Abstract X

Couple Questions in Java

Recommended Posts

X Abstract X    109
Hello everyone. I'm looking to better understand what's going on in a couple occassions, in Java. Thanks in advance. 1.
Object[] a = new Object[10];
Object[] b = a; //ok, what happens here.  does all of 'a' get copied into 'b' or is 'b' a reference of 'a' and whatever I do to 'b' will be done to 'a'?

2.
Object[] a = new Object[10];

for (int i = 0; i < 10; i++) {
    a[i] = new Object();
}

a = new Object[2]; //is all the previous data going to be removed from memory here?  What about if I set the array to null instead, then will it be removed from memory?

Share this post


Link to post
Share on other sites
Starter    128
That's about right. However for #2 if you set 'a' to anything else including null then it will be garbage collected provided there is no other references to it (ex. #1 won't be garbage collected if 'a' is set to something else since 'b' is still referencing the original memory).

Share this post


Link to post
Share on other sites
Fenrisulvur    186
1. a and b now refer to the same array. Also keep in mind that every element in a new array of objects is null until you put things in it - put an object in a[0] and the exact same object will be waiting for you in b[0].

2. Yeah, all the previous data is lost, and will be GC'd in due course. Assigning null would have the same effect, since either way you are no longer keeping any reference to the objects.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this