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

Microservices! They are everywhere, or at least, the term is. When should you use a microservice architecture? What factors should be considered when making that decision? Do the benefits outweigh the costs? Why is everyone so excited about them, anyway?  Brought to you in partnership with IBM.

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!

Discover how the Watson team is further developing SDKs in Java, Node.js, Python, iOS, and Android to access these services and make programming easy. Brought to you in partnership with IBM.

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.

THE DZONE NEWSLETTER

Dev Resources & Solutions Straight to Your Inbox

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.

X

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

{{ parent.tldr }}

{{ parent.urlSource.name }}