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
-~----------~----~----~----~------~----~------~--~---