Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Is This the Correct Object?

DZone's Guide to

Is This the Correct Object?

MVB Dan Newton shows off a new issue he came across at work. Even the pros can get stumped sometimes.

· Java Zone
Free Resource

Learn how to troubleshoot and diagnose some of the most common performance issues in Java today. Brought to you in partnership with AppDynamics.

This is something I came across at work that wasn’t working as I expected. After a little playing around it seemed pretty obvious but even after a few years of working with Java this wasn’t a situation I came across before.

Now what happened? Its way easier to show you an example first.

public class AssigningObjects {
    public static void main(String[] args) {
        Integer a = 1;
        Integer b = a;
        Integer c = 2;
        a = 3;
        a = c;
        System.out.println("a = " + a); // prints 2
        System.out.println("b = " + b); // prints 1
        System.out.println("c = " + c); // prints 2

        c = 4;
        System.out.println("a = " + a); // prints 2
        System.out.println("c = " + c); // prints 4

        c = null;
        System.out.println("a = " + a); // prints 2
        System.out.println("c = " + c); // prints null
    }
}

So the problem I had… I thought that if b = a and a = c then b = c, so by changing c‘s value b will also change. But this is not the case. What actually happens is a refers to an underlying object (which is the Integer 1) and by assigning b to ab now also refers to the same object. When a is assigned to c the underlying object a refers to has now changed, but this does not affect b which will still have the value 1 as the object it is pointing to has not changed.

Anyway this is just something small that I found interesting as I never actually ran into this situation before and when I told my colleague I wanted to tell him something interesting he told me to go away… so I told you instead!

Understand the needs and benefits around implementing the right monitoring solution for a growing containerized market. Brought to you in partnership with AppDynamics.

Topics:
java ,objects ,integers

Published at DZone with permission of Dan Newton, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}