Hi all,

I encountered a problem when working with Integer objects which I
would like to be discussed. Let me first show you my class:

001 public class Test {
002
003     int memberVar;
004
005     public static void main(String[] args) {
006
007         // Example 1
008         Test t1 = new Test();
009         t1.memberVar = 7;
010         Test t2 = new Test();
011         t2 = t1;
012
013         System.out.println(t1 == t2);
014
015         t2.memberVar = 55;
016         System.out.println(t1.memberVar);
017         System.out.println(t1 == t2);
018         System.out.println();
019
020         // Example 2
021         Integer i1 = new Integer(1);
022         Integer i2 = i1;
023         System.out.println(i1 + ", " + i2);
024         System.out.println(i1 == i2);
025
026         i2 = 5;
027         System.out.println(i1 + ", " + i2);
028         System.out.println(i1 == i2);
029         System.out.println();
030
031         // Example 3
032         String s1 = "Hello!";
033         String s2 = s1;
034         System.out.println(s1 + ", " + s2);
035         System.out.println(s1 == s2);
036
037         s2 = "Bye!";
038         System.out.println(s1 + ", " + s2);
039         System.out.println(s1 == s2);
040
041     }
042 }

Example 1: I create 2 objects t1 and t2 of class Test. In line 011 t1
is assigned to t2. Now t2 points to the same reference as t1, so line
013 returns true. Now in line 015 I change the property of t2 to 55.
Because it is the same object as t1, line 016 gives 55. This is what I
expect objects to do.

Example 2: The same matter but now with wrapper class Integer. In line
023 both i1 and i2 have the same contents of 1. Line 024 gives true,
so they are pointing to the same reference. Ok. In line 026 I change
object i2 to 5 and expect i1 to change also, because it is the same
object! But it doesn't, line 027 gives 1 and 5, line 028 gives false!
Is this a typical behaviour of wrapper classes or why doesn't it
work???

Example 3: same with Strings. It behaves like the Integers in example
2.
I guess this is because strings are immutable. So in line 037 there is
in fact created a new object of type String with contents "Bye!" and
s1/s2 are no longer the same object. Ok.

But why does the wrapper class not do what I'm expecting???

I'm looking forward to your ideas.
Rita

--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/javaprogrammingwithpassion?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to